BlueHarmel
BlueHarmel Devlog
BlueHarmel
전체 방문자
오늘
어제

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (330)
    • Book (11)
    • Dev (29)
      • ArtCon (0)
      • ESTsoft 오르미 (29)
    • Study (290)
      • Web (18)
      • AWS (2)
      • 알고리즘 (1)
      • GameDev (1)
      • 정보처리기사 (201)
      • English (1)
      • Mathematics (24)
      • 머신러닝 (7)
      • 딥러닝 (10)
      • 네트워크 보안 (5)
      • R (4)
      • 컴퓨터 네트워크 (6)
      • 데이터베이스 (8)
      • 데이터 통신 (0)
      • 운영체제 (2)
      • TIL (0)
    • Project (0)
      • 개인 (0)
      • 단체 (0)

인기 글

hELLO · Designed By 정상우.
BlueHarmel

BlueHarmel Devlog

운영체제 3. 프로세스
Study/운영체제

운영체제 3. 프로세스

2023. 11. 27. 13:22

1. 프로세스 개념

Process : 실행중인 프로그램

운영체제의 입장에서 작업의 단위가 된다

프로세스가 실행되기 위해선 특정 자원들이 필요하다.

- CPU 시

- memory

- files

- I/O 장치

프로세스들의 메모리 레이아웃은 몇가지 섹션들로 나뉜다

1. 텍스트 섹션 : 실행가능한 코드 명령어

2. 데이터 섹션 : 전역 변수들

3. Heap 섹션 : 프로그램 실행시간동안 동적으로 할당되는 메모리

4. Stack 섹션 : 함수를 호출할때 사용되는 임시 데이터 저장소(함수 인자들, 리턴 주소들, 로컬 변수)

프로세스가 실행되면, 스스로의 state를 변화시킨다

1. New : 프로세스가 생성된 상태

2. Running : 지시가 실행된 상태 (CPU를 점유해서 프로세스의 명령어를 CPU에 로드해 실행하는 상태)

3. Waiting : 프로세스가 특정이벤트(I/O 종료, 신호 수신)가 발생하기를 기다리는 상태

4. Ready : 프로세스가 CPU를 배정받기를 기다리는 상태

5. Terminated : 프소세스가 실행을 끝낸 상태

PCB (Process Control Block) / TCB (Task Control Block) : 프로세스가 가져야하는 모든 정보를 저장하는 구조체

각 프로세스는 PCB로 OS에 대표된다

PCB는 특정 프로세스와 연관된 많은 정보의 조각들을 가지고 있다.

- Process state :

- Program counter : 프로그램의 메모리 주소를 저장

- CPU Registers : IR(Information Register) / DR(Data Register)

- CPU-scheduling information

- Memory-management information

- Accounting information

- I/O status information

프로세스는 하나의 실행 스레드를 수행하는 프로그램이다.

Single thread of Control 은 프로세스가 한번에 한가지 작업만 하도록 한다

현대의 OS는 확장된 프로세스의 개념을 가진다.

- 프로세스가 여러개의 실행 스레드들을 가지는것을 허용해 한번에 하나 이상의 작업을 수행(multi-tasking / multi-processing)하도록 한다

Thread : 가벼운 프로세스

 

2. Process Scheduling

- Multiprogramming의 목적은 여러개의 프로세스를 동시에 실행해 CPU 사용효율을 최대화시키는 것

- Time Sharing의 목적은 프로세스들간의 CPU코어들을 자주 변경해서 사용자들이 각각의 프로그램이 동시에 실행되는 것처럼 느끼도록 하는 것

- Scheduling Queues(FIFO) :

- 프로세스들이 시스템에 들어갈때, 그들은 Ready queue(CPU의 코어에서 실행되기 전에 Waiting과 Ready하는 곳)에 들어간다. 

- 특정 이벤트가 발생하기를 waiting하는 프로세스들은 wait queue에 들어간다.

- 이런 큐들은 일반적으로 PCB들의 Linked List로 구현된다.

 

- Context Switch : 프로세스의 Context는 PCB에 저장된다.

- Context (프로세스 입장에서 이 프로세스가 사용되고 있는 상태)

- Interrupt가 발생했을때, 시스템은 현재 실행중인 프로세스의 Context를 저장한다. 나중에 그 Context를 되살려서 재개될수 있도록 한다.

- Context Switch는 CPU 코어들을 다른 프로세스로 switch해주고, 현재 프로세스의 state 저장과, 다른 프로세스의 state 복구를 수행하는 작업이다.

3. Operations on Processes

OS는 프로세스를 생성하고 프로세스를 종료하는데 필요한 메커니즘을 제공해야한다.

한 프로세스는 여러개의 새로운 프로세스들을 생성할수도 있다.

- 프로세스를 만드는 프로세스 : parent process

- 새롭게 생성된 프로세스 : child process

실행의 두가지 경우

1. 부모 프로세스가 자식 프로세스들과 계속해서 동시에 실행되는 경우

2. 부모 프로세스가 일부 혹은 전체 자식프로세스가 종료될때까지 기다리는 경우

address-space의 두가지 경우

1. 자식 프로세스가 부모 프로세스의 복제인 경우

2. 자식 프로세스가 새로운 프로그램을 로딩하는 경우

프로세스는

1. 마지막 문장의 실행을 종료했을때,

2. exit() 시스템 콜 : OS에게 삭제하도록 요청

3. OS deallocates and reclaims all the resources: 메모리를 할당하고, 파일들을 열고, I/O buffer등등

종료된다.

 

Zombie and Orphan

zombie process : 자식 프로세스가 종료되었지만 부모 프로세스가 자식 프로세스의 종료 상태를 회수하지 않았을 경우

orphan process : 부모 프로세스가 자식 프로세스보다 먼저 종료

 

UNIX-like OS에서는
- 새로운 프로세스가 fork() 시스템 콜로 생성된다

- 자녀프로세스는 부모 프로세스의 address space의 copy로 구성된다

- 두 포르세스들은 계속해서 실행된다. (fork() 시스템 콜 이후에 지시들을)

- 차이점 : fork()의 리턴코드는 자녀 프로세스에게 zero이다. 자녀 프로세스의 nonzero pid는 부모 프로세스에게 반환된다.

fork() 시스템 콜 이후에 부모는 계속해서 실행되거나, 자녀들이 실행될때 아무것도 할게 없다면, 자녀의 종료까지 ready queue 에서 자기자신을 빼두기 위해 wait()시스템 콜을 발생시킬 수 있다. (wait queue 로 이동해 자녀 프로세스의 interuppt를 기다린다는 것)

4. Interprocess Communication (IPC)

동시에(concurrently) 실행되는 프로세스들의 종류 : 

1. independent processes : 다른 모든 프로세스들과 공유하는 데이터가 없다.

2. cooperating processes : 다른 프로세스들에의해 영향 받거나 영향을 줄 수 있다. / 다른 프로세스들과 데이터를 공유하는 모든 프로세스

 

IPC : Inter-Process Communication

Cooperating process들은 IPC 메커니즘을 필요로 한다. 이는 상호간의 데이터를 데이터를 주고받는 교환을 가능하게 한다.

 

IPC의 두 기초모델들

1. Shared Memory : 

2. Message passing : 

 

5. IPC in Shared-Memory Systems

Producer-Consumer Problem :

- cooperating process 들의 개념을 서술하기위한 일반적인 패러다임

- 생산자는 소비자에의해 소비될 정보를 생산한다.

예를들어

- 컴파일러가 어셈블리 코드를 생산하고, 어셈블러가 그것을 소비한다

- 웹 서버가 HTML파일을 생산하고, 브라우저가 소비한다.

 

Shared memory를 이용한 해법

- 생산자와 소비자는 concurrently하게 실행되도록 만들어준다.

- buffer을 사용해 생산자가 버퍼를 채우고, 소비자는 버퍼를 비운다.

 

shared memory는 생산자와 소비자 프로세스들에의해 공유되는 메모리 영역이다.

6. IPC in Message Passing Systems

Shared memory방식의 문제점

- 이 프로세스들이 메모리 영역을 공유하는 것이 필수적인데, 공유 메모리를 다루고 접근하기위한 코드가 어플리케이션 프로그래머에 의해 명시적으로 작성되어야 한다.

Message-Passing : OS가 Cooperating process들에게 message-passing facility를 통한 상호간의 소통수단을 제공해준다.

message-passing facility의 두가지 기능:

1. send (messsage)

2. receive (message)

'

Communication Links : P와 Q라는 두개의 프로세스가 소통하기를 원한다면, 그들은 서로 SEND와 RECEIVE메세지를 주고 받아야 한다.

이 Communication link는 다양한 방법으로 적용될 수 있다.

1. direct / indirect communication

2. synchronous / asynchronous communication

3. automatic / explicit buffering

 

direct communicaiton :

- 소통하기 원하는 각각의 프로세스는 명시적으로 communication의 수신자와 송신자를 명명해야한다.

- 

저작자표시 비영리 변경금지 (새창열림)

'Study > 운영체제' 카테고리의 다른 글

운영체제 1,2 운영체제의 개념과 구조  (0) 2023.11.23
    BlueHarmel
    BlueHarmel
    Interested in Mathematics, Foreign Language, and "Programming"

    티스토리툴바