ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 99클럽 코테 스터디 14일차 TIL / 운영체제 - 프로세스
    Study(진행중)/항해99 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. 하위 프로세스를 생성하고 본인의 작업을 그대로 지속하는 것

     

     내일 학습할 것은 무엇인지

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

     

    반응형

    댓글

Designed by Tistory.