Study(진행중)/항해99

99클럽 코테 스터디 14일차 TIL / 운영체제 - 프로세스

Ski_ 2024. 8. 5. 01:23

오늘의 학습 키워드

   - 운영체제

공부한 내용 본인의 언어로 정리하기

Process? → 실행중인 프로그램(program in execution)

program that performs a single thread of execution

단일의 실행 스레드를 실행하는 프로그램

 

OS 입장에서는 작업에서 단위가 프로세스 단위

하나의 프로세스가 실행하기 위해서는 자원(Resource)이 필요

  • CPU
  • Memory
  • File, IO Device등

프로세스들의 메모리 배치 섹션

  • Text → 실행 코드
  • Data → 전역 변수
  • Heap → 프로그램 실행 중에 동적으로 할당되는 메모리(new, malloc)
  • Stack → 함수를 호출할 때 임시 데이터 저장장소(매개변수, 복귀 주소, 지역 변수)

프로세스를 제어하는 방법?

  • PCB(Process Control Block) or TCB(Task Control Block - Linux)
  • 각 프로세스가 가져야 할 정보를 PCB에 저장하고 제어
  • PCB는 많은 정보를 가지고 있다
    • Process state : new, ready, running, waiting, halted, …
    • Program counter : 이 프로세스가 다음에 실행할 명령어의 주소를 가리킴
    • CPU Register (Instruction + Data Register)
    • CPU Scheduling Information

여기까지는 한 줄의 실행 단위인데(single thread of execution) 어려개의 실행을 하고 싶다면? → Multitasking, Multiprocessing

프로세스보다 더 가볍게 실행하면? → Thread

과거 Multiprocessing → 현재 대부분 Multithreading

Multiprogramming(multiprocessing)의 목적 : 동시에 여러개의 프로세스를 실행해보자!

→ Time Sharing의 목적

  • cpu의 처리 속도는 빠르므로 cpu는 어차피 넉넉함
  • cpu 코어를 프로세스마다 자주 스위칭을 해서 동시에 실행되는 것 처럼 보이게 하는 것!

 

CPU가 작업을 실행하는 방법

Scheduling Queue(ready queue)

  • 바로 CPU를 획득하지 않음 == 바로 running 상태가 아님

→ Wating Queue

  • IO등의 작업 이후 실행을 기다리는 상태
  • 이후 ready queue로 이동

Context Switching

Context(문맥)?

→ 프로세스가 사용되고 있는 상태가 PCB에 저장되어 있는 것 = PCB 정보

Context Switching?

  • CPU core를 다른 프로세스에게 넘겨주는 것
  • 현재 프로세스의 Context를 저장
  • 새로운 프로세스의 Conext를 복원

 

결국 OS는 2가지 메커니즘을 제공해야 함

  1. 프로세스를 만드는 것
  2. 프로세스를 종료하는 것

프로세스는 하위 프로세스를 만들 수 있어야 함 -> fork()를 통해 제공

fork()는 부모 프로세스의 상태를 그대로 복제해서 제공

단, 부모 프로세스의 전역 변수를  하위 프로세스가 영향을 줄 수 x

 

부모 프로세스는 두 가지 선택지가 존재

1. 하위 프로세스를 생성하고 작업이 완료될 때 까지 부모 프로세스는 대기하는 방법 -> wait()

2. 하위 프로세스를 생성하고 본인의 작업을 그대로 지속하는 것

 

 내일 학습할 것은 무엇인지

내일은 알고리즘을 열심히 풀어봐야겠다.

 

반응형