1. Process의 communication state

- independent: 개별 프로세스가 동작하는 상황

- cooperating: share data, context switch, communication의 방식 중요

2. how to communicate( == IPC(Inter-Process Communication))

- 데이터를 주고 받는 것(Send, Receive)

- shared memory, message passing

3. 둘은 어떤 특징들을 가지고 있을까?

1) shared memory의 특징

- 메모리에 접근해서 데이터를 직접 다룬다.

- buffer를 통해서 communication하게 된다.

- buffer의 상태에 따라 3가지 경우로 나뉜다.

- 가득 찬 경우: P(생산 프로세스) 기다리기 - Q(소비 프로세스) 소비

- 넉넉한 경우: P 생산 - Q 소비

- 없는 경우: P 생산 - Q 기다리기

2) shared memory의 비유

- 하나의 테이블에 다양한 정보들(문서, 도구, 차트 등등..)이 있고, 이것을 활용해 정보를 생산하고 소비하게 된다.

- 각각의 사람들(프로세스)가 동시에 정보에 접근해서 변경을하게 되면, 혼란스럽게 될 수 있는 확률이 크다.

3) message passing의 특징

- 메시지만 주고 받는다.

- O/S가 cooperating 할 수 있는 도구(mailbox)를 제공한다.

- direct :메시지를 받을 프로세스를 명시한다.ex) Send(Q, message), Receive(P, message)

- indirect: 메시지를 mailbox에 넣어 둔다. ex) A == 메일박스, Send(A, message), Receive(P, message)

- Blocking send, Blocking receive: synchronous

- Non-blocking send, Non-blocking receive: asynchronous

4) message passing의 비유

- 각자의 책상에 앉아 있고 종이에 메시지를 적어 다른 책상에 앉아 있는 사람에게 전달한다.

- 또는 각자의 책상에 앉아 있고, 종이에 메시지를 적어 메일함에 넣어두면 누군가가 가져간다.

'OS' 카테고리의 다른 글

[공룡책] Chapter 2. Process? (1/4)  (0) 2021.07.13
[공룡책] Chapter 1. 운영체제는 무엇인가?  (0) 2021.07.12

1. 프로세스

- 프로세스는 실행 중인 프로그램(메모리에 올려 저서 작동하고 있는 상태), 프로세스는 os에서 작업 단위

- os는 프로세스를 관리하는 프로그램이다.

- 이와 같은 작업을 수행하기 위해서 프로세스는 리소스가 필요하며 이는, CPU time, memory, files, I/O devices

- 프로세스는 여러개의 메모리 레이아웃으로 나눌 수 있다.

2.  메모리 구조

  argv, argc 실행파일에서 입력되는 값
  stack auto
    가변 구간
  heap 사용자 활용 영역( malloc )
data segment bss uninitialized data
data initialized data
  text 코드 또는 literal

- 프로세스의 생명주기

1) new: 프로세스가 만들어지는 중

2) ready: 프로세스가 cpu에 할당되길 기다리는 중

3) running: Instruction들이 실행되는 중

4) waiting: 프로세스가 이벤트가 발생하길 기다리는 중

5) terminated: 프로세스의 실행이 종료되는 중

 

3.  pcb

- 각각의 프로세스는 pcb라는 구조체에 의해 대변되며, 담기는 정보는 아래와 같다.

1) Process state - new, ready, running, waiting, terminated

2) Program counter - Instruction으로 가져올 메모리 주소를 저장하는 곳

3) CPU registers - IR(instruction register), DR(data register)

4) CPU-scheduling information - cpu를 주고 받기 위한 스케쥴링 정보들

5) Memory-management information - 메모리 alloc과 관련된 정보

6) Accounting information - 계정 정보

7) I/O status information - 어떤 파일을 오픈했고 사용했는지

- 프로그램은 싱글 스레드에서 실행됨( only one task at a time )

- 현대의 os는 프로세스의 개념을 확장해왔으며 이는 한번에 한가지 이상의 작업을 실행할 수 있도록 함.

- Thread는 lightweight process. (위의 thread는 한줄로 쭉 이어져 실행되는 개념인 반면, os가 pcb를 통해 여러개의 프로세스를 운영하듯, process 안에서도 여러개의 thread를 운영한다는 개념적 이해를 필요로 한다.)

4. Process Scheduling

- Multiprogramming : 동시에 여러개의 프로그램을 실행시켜보자. cpu 사용량을 최대화 하기 위해

- time sharing : cpu core를 프로세스간의 변경을 통해 사용자 입장에서는 동시에 작동하는 것처럼 보이도록 함.

- ready queue는 링크드 리스트로 구현한다.

5. Queueing Diagram

- 프로세스 스케쥴링은 일반적인 표현

- cpu가 running하는 과정에서 interupting 되는 경우 context가 switch 된다.

- 프로세스가 사용되고 있는 상태를 context라고 하며, context에는 program count, cpu registers(ir, dr)이 포함된다.

- 이와 같은 정보는 PCB에 표현되며, 프로세스가 변경되는 context switch로 인해 총 3가지 task가 실행된다.

1) cpu core를 다른 process로 변경

2) 현재 process의 상태 저장

3) 다른 process의 상태 재개

- 이를 표현하면 아래와 같다.

6. Operations on Processes

- os는 프로세스를 만들거나 종료할 수 있는 메커니즘을 제공해야 한다.

- 하나의 프로세스는 다양한 새로운 프로세스를 만들 수 있다.

- 만드는 프로세스를 parent process, 만들어진 프로세스를 child process

- 실행의 2가지 방식

1) children과 함께 concurrently 실행

2) children이 종료 될때까지 기다리기

- 주소 공간의 2가지 사용 방식

1) 부모의 프로세스를 복사

2) 새로운 프로그램에서 실행(?)

7. 좀비와 고아..(ㅠ_ㅜ)

- 좀비 : 자식 프로세스가 terminated() 되었지만 부모 프로세스가 종료 상태를 회수 하지 않음(wait() 시스템 콜을 통해), 즉, 아이가 먼저 하늘나라로 갔는데(exit()) 부모가 장례(wait())를 치르지 않음..( 잔인. ㅠㅜ)

- 고아: 부모 프로세스가 먼저 terminated() 되었지만 자식프로세스 고아가 됨..

- wait()함수는 child의 상태 변화를 기다린다.

- child의 상태: 종료, 멈춤, 재시작

- 특히, child가 종료 되면 wait()함수는 시스템이 사용했던 리소스들을 회수하도록 허락한다. 반환값은 child의 pid이다.

'OS' 카테고리의 다른 글

[공룡책] Chapter 2. Process (3/4)  (0) 2021.07.15
[공룡책] Chapter 1. 운영체제는 무엇인가?  (0) 2021.07.12

1. 운영체제는 무엇인가?

- 컴퓨터 시스템을 제어 하는 소프트웨어

2. 컴퓨터는 무엇인가?

- 정보를 처리하는 기계

3. 정보는 무엇인가?

- 불확실한 사건에 대해 양적으로 표현한 것

- 클로드 섀넌의 정의: x라는 사건에 대한 정보의 양은 x라는 사건이 일어날 확률의 -log2임.

4. 컴퓨터는 정보를 어떻게 처리하는가?

- 정보의 최소단위(binary digit)

- 0->1, 1->0 정보의 상태 변환

- 부울 대수 : NOT, AND, OR

- 논리 회로: LC, LSI, VLSI, ULSI, SoC...

- 정보의 저장: 플립-플롭

- 정보의 전송: 데이터 버스

- 덧셈: 반가산기, 전가산기

- 뺄셈: 2의 보수 표현법

- 곱셈, 나눗셈: 덧셈과 뺄셈의 반복

- 실수 연산: 부동 소수점 표현법

- 함수: goto

- 이를 바탕으로 삼각함수, 미분, 적분, 사진 촬영, 동영상 재생 가능함. 

5. 컴퓨터는 누가?

- 엘런튜링이 할아버지(Universal Turing Machine == Operating System), 폰 노이만이 아버지(ISA)

6. 운영체제도 프로그램?

- 컴퓨터 시스템을 다루는 프로그램(일반적으로.. 운영체제 == kernel)

- system programs + application programs + kernel = o/s

- 운영체제는 사용자와 컴퓨터 하드웨어사이에서는 중간자적 역할을 수행하는 어플리케이션을 제공한다.

- 컴퓨터 시스템은 크게 본다면, 하드웨어, os, 응용프로그램, 사용자로 나눌 수 있다.

 

7. 컴퓨터 시스템의 구성

- 하나이상의 cpu를 가지고 있으며, bus를 통해 많은 디바이스가 연결되어 있다.

- 컴퓨터가 실행되면 eeprom에 있는 bootstrap을 실행한다. 일종의 마중물

- cpu와 I/O 디바이스는 interrupt를 통해 상호작용 한다. 여기서 폰노이만의 fetch, execute의 과정이 수행된다.

- storage system

 

- CPU: instruction을 수행하는 하드웨어

- Processor: 하나 이상의 cpu를 담고 있는 물리적 칩

- Core: the back computation unit of cpu

- Multicore: 하나의 cpu에 여러개의 core

- Multiprocessor: 여러개의 프로세스

- Multitasking( = multiprocessing): cpu의 빠른 작업 속도로 인해 시분할을 통해 동시에 작업하는 것처럼 느껴지도록 하는 것. 여기서 중요하는 것은 어떻게 cpu를 스케쥴링 할 것인가임.

 

- 2가지 모드: usermode는 직접적으로 H/W를 제어할 수 없음으로 안전. 제어할때는 os에 물어보도록 되어 있음.

- Operating System Services

- 참고자료

https://www.inflearn.com/course/운영체제-공룡책-전공강의/dashboard

'OS' 카테고리의 다른 글

[공룡책] Chapter 2. Process (3/4)  (0) 2021.07.15
[공룡책] Chapter 2. Process? (1/4)  (0) 2021.07.13

+ Recent posts