본문 바로가기

Dev.Basic/운영체제

(26)
[OS] 6-2. Process Synchronization II Chapter 6-2. Process Synchronization II Bounded - Buffer Problem버퍼의 크기가 유한한 환경에서 생산자와 소비자 사이에서 발생하는 문제를 말한다.생산자 프로세스, 소비자 프로세스 이 두 프로세스는 하나 씩만 존재하는 것이 아니라 여러 개씩 존재한다.생산자 프로세스의 역할은 데이터를 만들어서 공유 버퍼에 집어 넣는 역할을 하고소비자 프로세스는 그 반대로 버퍼에 있는 데이터를 꺼내가는 역할을 하게 된다. 이로 인해 어떤 문제들이 발생할 수 있을까?첫번째는 생산자 두 개가 하나의 버퍼에 동시에 데이터를 넣게 되는 경우이다.하나의 프로세스가 접근을 하게 되면 공유 버퍼에 lock을 걸게 될텐데,동시에 락을 걸게 되는 것인가? 의 문제이다.두번째는 소비자 프로세스 ..
[OS] 6-1. Process Synchronization I Chapter 6-1. Process Synchronization I Process Synchronization : 프로세스 동기화= Concurrency Control : 병행 제어 여러 주체(객체)가 하나의 데이터를 동시에 접근하려고 할 때를 Race Condition이라고 한다.데이터의 촤종 연산 결과는 그 데이터를 마지막에 다룬 프로세스에 따라 달라진다.동시에 접근했더라도 연산의 수행이 더 늦게 끝나는 프로세스의 결과값을 따르게 된다.즉,공유데이터(shared data)의 동시접근(consistency access)는 데이터의 불일치 문제를 발생시킬 수 있다는 이슈이다.그리고 우리는 이것을 조율해줘야 하는 문제가 발생한다.공유 메모리를 사용하는 프로세스 사이에서 발생할 수도 있고,커널 내부 데이터..
[OS] 5-2. CPU Scheduling II Chapter 5-2. CPU Scheduling II 앞서 살펴본 CPU Scheduling에 대한 구체적인 알고리즘을 살펴보겠다. FCFS(First Come First Served) 먼저 온 사람에게 먼저 제공한다는 뜻으로 먼저 할당 요청을 한 프로세스에게 CPU를 할당한다. 즉, 먼저 요청한 순서대로 처리하는 단순한 알고리즘이다. 비선점형 스케줄링이며 효율적이지 않다. 여기서 Nonpreemptive(비선점형)하다는 것은 일단 CPU를 할당받으면 자신의 작업을 모두 마치기 전까지, 즉 CPU burst가 완료되기 전까지 CPU를 반환하지 않는다는 의미이다. 문제점 convoy effect 발생 convoy effetct 란 소요시간이 긴 프로세스가 먼저 도달하여 시간을 잡아먹고 있는 부정적인 현상..
[OS] 5-1. CPU Scheduling I Chapter 5-1. CPU Scheduling I프로그램이 실행되면, 실행되면서 거치는 일련의 path가 존재한다.CPU가 일을 수행하고, I/O 작업 요청에 대한 응답을 기다리는 일을 반복한다.CPU가 일을 수행하는 시간을 CPU burst time 이라고 하고,I/O 요청에 대한 응답을 기다리는 시간을 I/O burst time 이라고 한다. CPU 스케줄링이란 무엇인가CPU 스케줄링이란 CPU입장에서 또는 프로세스 입장에서최고의 효율성을 보이며, 공평하게, CPU를 프로세스에게 분배하는 알고리즘, 방법을 의미한다. 스케줄링의 대상은 이미 Ready queue에 들어온 프로세스를 대상으로 진행된다. CPU 스케줄링이 필요한 이유프로그램마다 두 시간의 비율이 다르다.I/O 작업이 빈번한 작업(I/O..
[OS] 4. Process Management Chapter 4. Process Management 누가 프로세스를 생성하는가?부모 프로세스가 자식 프로세스를 생성한다.부모 프로세스 하나가 여럿의 자식 프로세스를 생성할 수 있다.이는 트리 형태로 부모-자식 관계가 나타난다.프로세스는 기본적으로 CPU자원을 할당받고 본인의 일을 수행하는 숙명이다.결국 부모 프로세스로부터 생성된 자식 프로세스는 부모 프로세스와 CPU자원을 얻으려는 경쟁 구도가 형성된다.운영체제로부터 받은 CPU자원을 부모 프로세스와 공유하는 경우도 있지만,일반적으로는 공유하지 않는 모델로 서로 경쟁하는 구도가 형성된다. 그렇다면 부모 프로세스는 누가 생성하는가?사용자가 프로그램을 실행시키면 운영체제를 통해서 생성된다. 프로세스 생성과정자식은 부모의 공간을 복사한다.이를 복제 생성된다고..
[OS] 3-2. Process II / Thread란 무엇인가 / Thread 종류 Chapter 3-2. Process IIThreadA thread is basic unit of CPU utilization or lightweight process= Program counter, register set, stack spaceThread 끼리 공유하는 부분= code section, data section and OS resources 동일한 일을 하는 부분이 많은 프로세스를 여러 개 생성하는 것은 메모리 낭비이다. 그래서 프로세스는 하나만 생성하고 Program counter만 여러 개 생성한다. 즉 CPU수행 단위를 여러 개를 두는 것이다. 이것을 쓰레드(Thread)라고 한다. 각각 다른 Instruction을 수행하려면 Program counter 값이 존재해야 하고, 메모리에..
[OS] 3-1. Process I / 프로세스란 무엇인가 / Process Control Block / Scheduler Chapter 3-1. Process 프로세스란 무엇인가Process is program in execution프로세스란 현재 실행중인 프로그램을 말한다.그리고 이 프로세스를 구성하는 요소들을 프로세스의 문맥(process context) 프로세스의 문맥은 무엇을 말하는가1. CPU 수행 상태를 나타내는 하드웨어 문맥, Program Counter 등의 register들 값을 포함한다.PC는 다음에 수행할 명령어(code)의 위치에 대한 정보(주소값)를 담고 있다.CPU가 할당되었을 때, PC가 가리키는 부분부터 수행해나가면 되는 것이다. 2. 프로세스의 주소 공간을 포함한다.즉, code, data, stack 각각의 공간에 어떠한 값이 들어있는가를 나타내는 주소값을 포함한다.현재 변수의 값은 얼마인가..
[OS] 2-2. System Structure & Program Execution II Chapter 2-2. System Structure & Program Execution II 입출력 방식에는 두 가지로 나뉜다.동기식 입출력, 비동기식 입출력이다. synchronous I/OI/O 요청 후 입출력 작업이 완료된 후에어 제어권이 사용자 프로그램에 넘어가는 방식이다.동기식 입출력은 구현 방법에 따라서 또 두 가지로 나뉜다. 구현방법1>I/O 작업이 끝날 때까지 CPU를 갖고 있는다. 즉 반환하지 않는다.이렇게 되면 매 시점마다 하나의 I/O만 일어날 수 있으며 CPU의 낭비가 상당하다.구현방법2>I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗는다.I/O 처리를 기다리는 줄에 그 프로그램을 줄 세운다.그리고 다른 프로그램에게 CPU를 할당한다. asynchronous I/OI/O요..