📚 CS/운영체제

📚 CS/운영체제

[OS] 프로세스 레지던트 셋과 프로세스 스케줄링 (Resident Set, Process Scheduling)

레지전트 셋이란, 메모리에 들어와있는 프로세스 페이지 정보들의 집합을 말한다. 또한 페이지의 갯수를 레지던트 셋 사이즈라 하는데, 이 사이즈를 규정하는 서로 다른 방법에 대해 알아보려 한다. Process Resident Set 레지던트 셋 사이즈를 결정하는 기준 Fixed allocation : 할당해주는 메모리 프레임의 수를 고정시킨다. 페이지 폴트가 발생하여 제거될 페이지를 선별해야 할 때, 자신이 갖고 있는 페이지 중에서 선택하는 Local Scope 영역에서 Replacement가 처리된다. Variable allocation : 할당해주는 메모리 프레임의 수를 유동적으로 결정한다. 해당 방법은 Replacement 처리 시 Local Scope와 Global Scope 영역 모두에서 사용된다...

📚 CS/운영체제

[OS] 다계층 페이지 테이블과 TLB, 페이지 교체 작업

지난 시간 페이징 방식에 기반한 가상 메모리 기술인 디멘드 페이징에 대하여 학습하였다. 해당 방법론은 프로세스 크기에 비례하여 페이지 테이블 또한 커지는 문제가 발생하였는데, 이를 해결할 방법을 학습하고자 한다. 다계층 페이지 테이블 페이지 테이블 크기 문제를 해결하는 방법 4Kbyte 페이지에 4바이트 엔트리가 1,024개 담긴다. 코드가 많아지면 그에 따라 페이지 테이블을 담고 있는 엔트리도 증가하게 되고, 하나의 페이지에 담기지 않게 된다. 이 많은 양의 엔트리들을 페이지에 논리적으로 분배하기 위한 방법이 존재한다. 첫 번째는 멀티 레벨 페이지 테이블로, 계층적 특성(Hierarchical)을 가진다. 두 번째 방법으로는 Inverted 페이지 테이블이 있는데 성능 이슈로 요즘은 잘 사용하지 않는다..

📚 CS/운영체제

[OS] 가상 메모리와 디멘드 페이징 (Virtual Memory, Demand Paging)

가상 메모리 페이징 이후의 메모리 관리 방법으로, 프로세스의 일부만 물리적 메모리에 저장하고, 나머지는 가상 메모리에 저장하여 필요할 때만 호출하여 사용하는 동적 메모리 관리법을 말한다. 보조기억장치에 가상 메모리 공간을 만들어, 프로세스 원본을 저장하고 직접적인 실행에 필요한 Instruction들만 메인메모리에서 실행시키켜 공간 효율 측면에서 굉장히 뛰어나다. 메모리 분류 실제 메모리 (Real memory) 주기억장치 주소 정보 (=real address, physical address, absolute address) 가상 메모리 (Virtual memory) 보조기억장치 가장 주소 공간 (=logical address, virtual address) 그러나 처리 과정에서 수시로 보조기억장치에 접..

📚 CS/운영체제

[OS] 주소 바인딩과 페이징, 세그먼테이션 (Address Binding, Paging and Segmentation)

주소 바인딩 주소 바인딩이란, Instruction이나 Data의 Physical Address를 결정하는 것을 말한다. 바인딩이 일어나는 시점에 따라 Compile Binding, Loading Binding, Execute Binding으로 분류할 수 있다. Compile Binding 프로그램 작성 후 소스코드를 바이너리코드로 변환하는 시점에 바인딩하는 것을 말한다. 프로세스 시작 지점($BA, 상대주소)을 100으로 지정해주고 컴파일 스캔 과정에서 계산한 코드의 길이에 따라 다음 변수의 절대 주소를 지정해준다. (I -> $BA + 406) Code Relocation 시 충돌로 인하여 명령어들이 꼬이게 된다. Load Time 실제로 메인 메모리에 데이터를 넣는 로딩 과정에서, 운영체제가 물리적..

📚 CS/운영체제

[OS] 메모리 관리와 가상 주소 공간 (Memory Management, Virtual Address Space)

메모리 관리 방식 메모리 관리의 역할은 크게 두 가지로 나뉘어진다. 프로세스에게 메모리를 분배하는 메모리 할당, 처리 중인 프로세스들의 메모리를 관리하는 메모리 보호이다. Relocation 프로세스가 특정 번지의 메모리 주소에 할당되어 있을 때 주소를 옮겨주는 것을 말한다. 메모리 부족 현상을 해결하기 위해 주기억장치에 있던 프로세스를 잠시 보조기억장치로 옮겨 놓는 Swapping이나 메모리 공간을 조각모음하는 Compaction 등의 처리 과정에서 발생한다. 메모리 할당 고정분할식 메모리 할당 한정된 크기의 메인 메모리 공간을 여러 프로세스들에게 분배해주는 방법으로서, 초기 연구된 메모리 할당 방식이다. 파티션을 분할해놓고 프로세스가 생성되면 빈 파티션 중 하나를 부여해준다. 인덱싱 측면에서 유용하며..

📚 CS/운영체제

[OS] 디바이스 드라이버와 RAID

운영체제에서 입출력을 관리하는 기능은 커널 I/O Subsystem과 디바이스 드라이버로 나눌 수 있다. 전자는 입출력 관리의 상위 기능을, 후자는 전자의 지시를 받아 직접 하드웨어를 제어하며 입출력을 수행한다. 디바이스 드라이버 초기화 인터페이스 : 드라이버는 모듈 형식으로 구성되는데, 모듈을 생성할 때나 갱신할 때 Init 함수가 호출된다. 파일 시스템 인터페이스 : Open, Read, Write, Release .. 하드웨어 인터페이스 : Inturrpt, Recieve .. 장치와 커널 간 스위치 테이블을 통해 데이터를 교환하는데 Character Driver의 경우 chrdevs[] 테이블을, Block Driver의 경우 blkdevs[] 테이블을 이용한다. 초기화 시 register함수를 ..

📚 CS/운영체제

[OS] 디스크 스케쥴링 (Disk Scheduling)

Disk Scheduling 일반적인 입출력 장치 스케쥴링 알고리즘은 '선입선출'이나, 디스크 스케쥴링은 이를 따르지 않음 디스크 구조 디스크는 크기가 큰 순으로 표면(Surface) - 트랙(Track) - 섹터(Sector)로 구성되어 있음. 표면 하나당 20 ~ 1,500개의 트랙이 존재하며, 양면을 모두 사용함. 트랙의 가장 바깥쪽이 0번으로 넘버링되며, 안쪽으로 들어갈 때마다 증가. y축을 기준으로 봤을 때 다른 표면에서 동일한 트랙 넘버를 갖고 쌓이는 집합을 실린더(Cylinder)라고 함. 실린더의 수는 트랙의 갯수와 동일. 한 섹터 영역이 저장될 때마다 섹터의 끝에서 저장된 데이터들에 대한 CheckSum - Parity 연산이 이루어짐. 이는 디스크를 접근하며 주기적으로 오류를 검사할 때..

📚 CS/운영체제

[OS] 인터럽트 처리와 입출력 제어 (Interrupt, I/O Control)

1. Interrupt 디바이스에 비동기적인 이벤트가 발생했을 때, 처리를 위해 운영체제(커널)에 부탁하는 것을 인터럽트라 한다. 인터럽트는 커널에 접근하여 구현된 함수를 실행하게끔 하는 Kernel entry point 중 한 가지 방식이며, 이외에도 트랩(Trap, Software Interrupt), 시스템콜(System call)이 존재한다. 비동기적이라 함은 이벤트가 발생하는 시점이 미리 정해지지 않은 경우를 말한다. Interrupt Handling 장치들은 PIC(Programmable Interrupt Controller)를 거쳐 CPU로 신호를 전송하고, 이를 커널 스택에 저장 후 유저 모드에서 모드 체인지를 통해 커널에 진입한다. 인터럽트 처리 과정 유저 모드에서 인터럽트 발생 시, C..

📚 CS/운영체제

[OS] 파일 데이터 블록과 빈 블록 관리

File Allocation 파일에서는 블록 단위로 데이터를 저장한다. 블록 하나의 크기는 4,096Byte이다. 파일 내부에 여러 개의 블록이 존재할 때, 이들을 연결해주는 것을 File Allocation이라 한다. Allocation에는 아래와 같은 방법이 존재한다. Contiguous Allocation 디스크 내부에 존재하는 연속된 블록들을 할당해 파일을 저장하는 방법. 파일 구성 테이블이 존재하는데, 이 테이블에 파일명 - 시작 블록 인덱스 - 블록 길이가 들어있다. 장점 Read/Write 처리하는 데에 시간이 적게 걸린다 단점 External Fragmentation이 발생. 먼저 Fragmatation이란 메모리에 생기는 작은 빈 공간을 말하는데, 빈 공간이 덩어리로 이루어져 있지 않고,..

📚 CS/운영체제

[OS] 데드락 (Deadlock)

1. 데드락 (Deadlock) 프로세스나 쓰레드가 사용하고자 하는 컴퓨터 자원을 다른 프로세스가 갖고 종료 조건이 서로 맞물려 있는 상태로 무한정 대기하는 상황을 데드락(Deadlock)이라고 한다. 프로그램 설계 시 데드락이 발생하지 않도록 유의하여야 한다. 각자 설계한 프로그램이 단독적으로 실행될 때는 문제가 없을 수 있지만, 여러 개의 프로그램이 함께 실행되는 과정에서 발생할 수도 있기 때문에 문제점을 발견하거나 예방하기 쉽지 않다. 컴퓨터 자원의 분류 재사용 가능한 자원(Reusable Resources)과 소비성 자원 (Comsumable Resources)으로 나뉘어진다. CPU나 입출력 장치, 메모리 등 대부분의 하드웨어 자원은 사용 후 소멸되지 않으므로 재사용 가능한 자원에 속한다. 이러..

재웅 Jaewoong
'📚 CS/운영체제' 카테고리의 글 목록