Computer Science/운영체제
-
[OS] 교착 상태 (Deadlock)Computer Science/운영체제 2021. 1. 11. 12:06
Deadlock(교착 상태) 두 개 이상의 프로세스가 필요한 자원을 기다리면서 무한정 중지된 상태 Resource Allocation Graph(자원 할당 그래프) Node 프로세스 노드(P1, P2), 자원 노드(R1, R2) Edge Rj → Pi : 자원 Rj이 프로세스 Pi에 할당 됨 Pi → Rj : 프로세스 Pi가 자원 Rj을 요청 중(대기 중) 자원 R2가 프로세스 P1에 할당 되었다. 프로세스 P1이 자원 R2를 요청하고 있다. 자원 R1이 프로세스 P2에 할당 되었다. 프로세스 P2가 자원 R1을 요청하고 있다. 그래프를 생성한 후 Cycle이 생기면 Deadlock이 발생한 것! Deadlock Prevention(교착 상태 예방) 4개의 deadlock 발생 필요 조건 중 하나를 제거..
-
[OS] 프로세스 동기화와 상호배제 (Process Synchronization and Mutual Exclusion) - ③Computer Science/운영체제 2020. 12. 19. 20:42
Language Level Solutions Monitor(모니터) 공유데이터와 임계 영역의 집합 wait(), signal() 연산 존재 사용이 쉽고, Deadlock(교착상태) 등 에러 발생 가능성이 낮음 Monitor의 구조 Entry Queue(진입 큐) : 모니터 내의 procedure(function) 수 만큼 존재 Mutual Exclusion(상호 배제) : 모니터 내에는 항상 하나의 프로세스만 진입 가능 Information Hiding(정보 은폐) : 공유 데이터는 모니터 내의 프로세스만 접근 가능 Condition Queue(조건 큐) : 모니터 내의 특정 이벤트를 기다리는 프로세스가 대기 Signaler Queue(신호 제공자 큐) : 모니터에 항상 하나의 신호 제공자 큐가 존재, ..
-
[OS] 프로세스 동기화와 상호배제 (Process Synchronization and Mutual Exclusion) - ①Computer Science/운영체제 2020. 12. 19. 20:40
SW + HW Solutions Process Synchronization(동기화) 여러 개의 프로세스들이 존재하는 다중 프로그래밍 시스템에서 프로세스들은 서로 독립적으로 동작합니다. 공유 자원 혹은 데이터가 있을 때, 각각의 독립된 프로세스가 그 자원에 동시에 접근한다면? 다시 말해서 병행 수행중인 비동기적 프로세스들이 공유 자원에 동시 접근할 때 문제가 발생할 수 있습니다! 이를 막기 위해 동기화가 필요한데, 동기화는 다음과 같이 정리할 수 있습니다. 프로세스들이 서로 동작을 맞추는 것 프로세스들이 서로 정보를 공유하는 것 Mutual Exclusion(상호 배제) 상호배제란 둘 이상의 프로세스가 동시에 임계 영역에 진입하는 것을 막는 것을 의미합니다. 이러한 상호배제를 위해서 고려해야 할 3가지 기..
-
[OS] 프로세스 스케줄링 (Process Scheduling)Computer Science/운영체제 2020. 11. 6. 21:28
스케줄링의 목적 프로세스 스케줄링이 왜 필요한가? 우리가 사용하는 대부분의 시스템은 하나의 프로세스만을 가지고 있지 않습니다. 여러 개의 프로세스가 시스템 내 존재하는 다중 프로그래밍(Multi-Programming) 환경입니다. 따라서 자원을 나누어 사용하기 위해서 할당 할 프로세스를 선택해야 합니다. 즉 자원을 할당 할 프로세스를 선택하는 것을 스케줄링이라고 얘기할 수 있습니다. ※ 자원을 관리하는 방법 시간 분할 (Time Sharing) 관리 : 하나의 자원을 여러 스레드들이 번갈아 가며 사용 (프로세서 스케줄링) 공간 분할 (Space Sharing) 관리 : 하나의 자원을 분할하여 동시에 사용 (메모리 분할) 다시 한번 스케줄링의 목적을 정리하면, 시스템의 성능 향상을 위해서 입니다. 이러한 ..
-
[OS] 스레드 관리 (Thread Management)Computer Science/운영체제 2020. 10. 21. 14:32
프로세스(Process)와 스레드(Thread) 프로세스는 자원을 할당받고, 그 자원을 제어하여 원하는 작업을 수행합니다. 자원의 할당과 자원의 제어에서 후자 부분만을 떼어놓은 것을 스레드라고 합니다. 하나의 프로세스 안에는 여러 개의 스레드가 존재할 수 있습니다. 즉 제어는 여러개 존재할 수 있다는 것을 의미합니다. 프로세스가 할당받은 자원들은 공유하면서, 이에 대한 제어권(스레드)는 위와 같이 여러개가 존재할 수 있습니다 어떤 프로세스에게 할당된 메모리 공간이 있을 때, 위와 같이 같은 프로세스의 스레드들은 동일한 주소 공간을 공유합니다. (자원 영역인 코드, 전역 데이터, 힙 영역을 공유한다는 의미) 그리고 각 스레드마다 자신의 작업 영역을 할당받게 됩니다. 할당된 공간에서 지역 데이터를 만들고 작..
-
[OS] 프로세스 관리 (Process Management)Computer Science/운영체제 2020. 1. 9. 22:54
프로세스(Process)의 정의 실행중인 프로그램 커널에 등록되고 커널의 관리하에 있는 작업 각종 자원들을 요청하고 할당 받을 수 있는 개체 프로세스 관리 블록(PCB)을 할당 받은 개체 실행 중에 각종 자원을 요구, 할당 반납할 수 있는 능동적인 개체 자원(Resources)의 정의 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체 H/W resources : Processor, Memory, Disk, Monitor Keyboard etc... S/W resources : Message, Signal Files, Installed SWs etc... 프로세스 관리 블록 PCB(Process Control Block) OS가 프로세스 관리에 필요한 정보 저장 (프로세스 생성 시, 같이 생성됨)..
-
[OS] 단일 커널 VS 마이크로 커널Computer Science/운영체제 2020. 1. 2. 18:28
커널은 운영체제의 핵심 기능을 모아놓은 곳으로 다음과 같은 역할을 한다. 핵심 기능 설명 프로세스 관리 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다. 메모리 관리 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다. 파일 시스템 관리 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다. 입출력 관리 필요한 입력과 출력 서비스를 제공한다. 프로세스 간 통신 관리 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다. 커널의 핵심 기능은 유기적으로 복잡하게 얽혀 있다. 이러한 기능을 어떻게 구현하는가에 따라 커널의 종류가 구분된다. 단일 커널(Monolithic Kernel) 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있는 구조 장점 모듈이 ..