CS/운영체제

    [ETL] Functions of OS

    [ETL] Functions of OS

    출처 : SNUON / 운영체제의 기초: 쉽게 배우는 운영체제 원리 / 서울대 홍성수 교수님 1. Coordinator 자원 경쟁을 잘 중재해야 함 2. Illusion Generator 사용자들이 직관적으로 사용할 수 있도록 abstraction 제공 3. Standard Library 시스템을 관리하는데 필요한 모듈들을 제공 OS as Coordinator UNIX 계열의 OS는 I/O를 다음과 같이 3개로 나눈다 Character I/O device : 전송 단위가 Byte인 I/O 장치 ex) 키마 Block I/O device : 전송 단위가 Block인 I/O 장치 ex) 파일 Network I/O device : 말 그대로 네트워크 OS as Illusion Generator

    [ETL] Evolution of OS

    [ETL] Evolution of OS

    출처 : SNUON / 운영체제의 기초: 쉽게 배우는 운영체제 원리 / 서울대 홍성수 교수님 Phase I 초기 컴퓨터에서 가장 중요한 것 : CPU Utilization I/O 하는 동안 CPU가 놀고 있네? 뭔가 CPU의 낭비를 줄일 방법 없을까? 1. Synchronous I/O : 얘는 어쩔 수 없는 것 같고... 2. Asynchronous : 얘는 그냥 알아서 처리하게 명령만 내리고 CPU는 하던 일이나 마저 하면 되지 않을까? $\Rightarrow$ I/O controller 만들어서 I/O 작업 맡기고 Interrupt 로 결과만 알려주자! ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 낭비를 줄이긴 했는데 synchronous I/O에게 일을..

    Process Synchronization II

    Process Synchronization II

    출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님 2개의 자원을 다 가져야만 하는 작업이라고 생각해보자. ex) A라는 데이터를 읽어서 B에다가 저장 만약에 하나씩 차지하게 되면? P0가 S를 얻은 후 CPU를 뻇기면 P1이 Q를 획득하는데 S는 획득 못함 다시 P0로 넘어가서 Q를 획득하려고 했더니 없음 ... 일이 다 끝나야만 자원을 내어놓기 때문에 데드락 (다르게 이야기하면 각각의 입장에서는 starvation 이기도 한데 .. 이렇게 자원을 얻는 순서를 지정해주면 데드락이 생기지 않는다 Classical Problems of Synchronization 1. Producer-Consumer Problem 생산자 프로세스는 데이터를 만들어서 집어넣는 역할 소비자 프로세스는 데이터를 꺼내가는..

    Process Synchronization I

    Process Synchronization I

    출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님 아래 예시들을 보면 무슨 문제가 발생하는 것인지 잘 이해할 수 있다. 1. 프로세스가 커널 모드에서 커널 변수 count = 5 를 1 증가시키려고 하고 있었다. count 변수를 레지스터에 등록하고 증가 연산을 하려고 하는데 때마침 먼저 처리해야할 작업이 인터럽트로 들어왔다. 커널은 우선 문맥을 저장해두고 인터럽트를 처리하기로 했다. 그런데 하필 인터럽트 처리 과정에서 count-- 연산을 수행했고 count = 4 가 되었다. 다시 원래의 작업으로 돌아왔을 때 커널은 저장해둔 문맥을 로드했고 count = 5가 되었다. 이제 count++ 연산에 의해 count = 6이 되었다. count-- 연산은 전혀 반영되지 않은 것이다! 해결책 변수를..