목록공부한거/운영체제 (10)
눈팅하는 게임개발자 블로그
DeadLock 발생 조건 4가지 (Coffman Condition) - Mutual Exclusion(상호 배제) 모든 자원은 한 번에 하나의 스레드에게만 점유된다. 한 스레드가 해당 자원에 대한 소유권을 가졌다면 다른 스레드는 해당 자원에 접근할 수 없음. - Hold & Wait(소유 & 대기) 스레드가 한 자원의 소유권을 가진 상태에서 다른 자원의 소유권을 요청한 상태로 대기한다. - No Preemption(비선점) 스레드가 가진 자원에 대한 소유권을 강제로 뺏어올 수 없다. - Circular Wait(환형 대기) 한 그룹의 스레드들에 대해(자원 할당 그래프에서) 각 스레드들이 다른 스레드가 소유한 자원을 요청하는 원형의 고리가 형성된다. 위의 4가지 조건을 모두 만족하는 시스템에서는 교착상태..
가상 메모리 전략 메모리의 범위를 보조기억장치까지 확대하여. 대부분의 메모리들(사용되지 않고 있는)이 보조기억장치에 존재하는 것처럼 운영하는 전략. 이 전략으로 응용 프로그램의 크기가 주 기억장치의 크기보다 크더라도 실행할 수 있다. Demand Paging 프로세스의 모든 페이지를 메모리에 올려 놓지 않고, 페이지가 필요할 경우 물리 메모리로 로딩한다. 해당 기법을 위해 페이지 테이블에 추가되는 정보 Valid/Invalid bit : 해당 페이지가 물리 메모리에 존재하는지에 대한 Flag bit. 물리 메모리에 존재하면 1이고 보조기억장치(스왑 영역)에 존재하면 0이다. Modified bit : 해당 페이지가 물리 메모리에 적재된 이후 수정되었는가에 대한 Flag bit. 수정 되었다면 1이고 수정..
페이징 기법 프로세스의 주소 공간과 물리 메모리를 페이지 단위로 분할하고 프로세스의 각 페이지를 물리 메모리의 프레임에 분산 할당하고 관리하는 기법. 논리 주소의 물리 주소로의 변환은 CPU에 내장되어 있는 MMU(memory management unit)에 의해 이루어진다. 페이지와 프레임 프로세스의 주소 공간을 동일한 크기의 페이지(page)로 나눈다. 물리 메모리 역시 동일한 크기로 나누고, 이를 프레임(frame)이라고 부른다. 코드, 데이터, 스택, 힙 등의 메모리 구성요소에 관계없이 고정 크기로 분할한 물리적 단위. 페이지와 프레임에 번호를 붙이며 페이지의 크기는 보통 4KB, 운영체제마다 다르게 설정 가능. 페이지 테이블 : 각 페이지에 대해 페이지 번호와 프레임 번호를 1:1로 저장하는 테..
멀티스레딩 환경에서 여러 스레드가 동시에 공용 데이터에 접근하는 경우 공용 데이터가 훼손되는 문제가 발생한다. 이를 해결하기 위해 스레드들을 동기화할 필요가 있다. 스레드 동기화 공용 데이터에 접근하고자 하는 다수의 스레드가 충돌 없이 데이터에 접근하기 위해 상호 협력하는 상황을 만드는 것. 한 스레드가 공용 데이터에 배타적 독점적으로 접근한다. 임계 구역과 상호 배제 개념 - 경쟁 여러 스레드가 공유 데이터 혹은 공유 데이터를 액세스하는 임계 구역에 동시에 접근하는 상황 - 임계 구역(critical section) 공유 데이터에 접근하는 프로그램 코드들(공유 데이터, 테이블 갱신, 파일 쓰기 등) - 상호 배제(mutual exclusion) 임계 구역에 대한 경쟁 상황의 해결책. 임계 구역에 오직 ..
실행 대기중인 프로세스(스레드)중 하나를 선택하는 과정. CPU의 유휴 시간(CPU가 노는 시간)을 최소화하여 CPU의 활용률을 극대화한다. 컴퓨터 시스템 처리율의 향상을 목적으로 한다. CPU 스케줄링이 시행되는 4가지 경우 1. 스레드가 시스템 호출 끝에 I/O를 요청하여 Block될 때. 2. 스레드의 CPU 타임 슬라이스를 모두 소진하여 타이머 인터럽트가 발생할 때.. 3. 스레드가 자발적으로 CPU를 반환하여 새로운 스레드를 선택해야 할 때. 4. 더 높은 우선순위의 스레드가 요청한 입출력 작업이 완료되어 인터럽트가 발생할 때. 타임 슬라이스 커널이 스케줄을 단행하는 주기 시간. 스케줄 된 스레드에게 할당하는 CPU 시간. CPU는 타이머 인터럽트의 도움을 받아 타임 슬라이스를 단위로 스케줄링한..
프로세스 보조기억장치에 적재되어 있던 프로그램이 실행을 위해 메모리에 적재되어 코드, 데이터, 힙, 스택 메모리 영역을 할당 받아 프로세스가 된다. 프로세스의 Life Cycle 프로세스는 생성에서 소멸까지의 상태가 변하면서 Ready, Running, Terminated, Zombie, Blocked의 5가지 상태를 가질 수 있다. 프로그램이 최초 실행되어 메모리에 적재되면 언젠가 스케줄이 될 수 있도록 Ready 상태가 된다. 이후 스케줄되어 Running 상태로 변하여 프로세스가 실행되며. 프로세스 실행 중 다른 작업이 끝나길 기다리거나 IO 입출력이 실행되면 Blocked 상태로 변해 대기하게 된다. 이후 프로세스가 완료되거나 종료되면 Terminated/Zomibe 상태가 되어 종료 코드를 남긴..
Thread 개념이 나타난 배경 프로세스가 작업 단위로서 사용 되기에 여러 단점들이 존재함. - 프로세스 생성에 드는 비용이 크다. 프로세스를 위한 메모리를 할당하고, PCB(Process Control Block)를 생성하고, 페이지 테이블 생성하는 등 프로세스를 생성하는 시간의 오버헤드가 크다. - 프로세스 컨텍스트 스위칭에 드는 비용이 크다. CPU와 PCB 사이의 컨텍스트 교환에 드는 비용이 크고. 페이지 테이블 전환(TLB 등)에 따른 지연 시간이 길고, CPU 캐시 변경 등에 드는 비용이 크다. - 프로세스 사이 통신의 어려움 프로세스들은 완전히 독립적인 주소 공간을 가지고 있기 때문에 두 프로세스 사이에 데이터를 주고 받기 위해서는 제 3의 공간이나 특별한 방법이 필요. IPC를 이용할 경우..
Context 프로그램이 실행 중인 상황에 대한 정보. 메모리 : 프로세스가 할당 받아 사용 중이던 메모리에 대한 정보 CPU 레지스터들의 값 : PC, SP, AC등 레지스터들이 가지고 있는 값들에 대한 정보 Context Switching 현재 실행중인 프로그램의 실행을 중지하고 다른 프로그램을 실행하도록 하는 작업. 현재 실행중인 프로그램의 Context를 다른 곳에 복사하여 저장하고 실행시키고자 하는 프로그램의 Context를 가져온다. Thread Switching 현재 실행중인 스레드를 중단 시키고, 다른 스레드에게 CPU를 할당하여 실행시키는 과정 현재 CPU의 컨텍스트를 현재 스레드의 TCB(Thread Control Block)에 저장하고 스위칭 할 스레드의 TCB에 저장된 컨텍스트를 C..
시스템 호출은 사용자 응용 프로그램이 운영체제에 무언가를 요청할 때 사용하는 인터페이스이다. 사용자 공간과 커널 공간 프로세스에게 할당되는 메모리 공간은 사용자 공간과 커널 공간으로 나뉘어져 있다. 사용자 공간은 각각의 프로세스에 할당된 공간이며. (프로세스의 개수만큼 존재한다.) 커널 공간은 운영체제(커널)를 위해 할당된 공간으로 한 운영체제 내의 모든 프로세스가 자신에게 할당 된 커널 공간이 있는 것처럼 운영되지만 실제로 커널 공간은 한 개만 존재하고, 모든 프로세스가 이를 공유한다. CPU 내에 모드 레지스터라는 것이 존재하며, 이 레지스터의 비트가 0일 경우 사용자 모드. 1일 경우 커널 모드가 되는데. 표준 라이브러리의 코드가 실행될 경우 모드 레지스터의 비트가 0인 상태로 프로세스가 사용자 공..