CS - 운영체제(2) 프로세스와 쓰레드

김영현·2023년 7월 4일
0

CS

목록 보기
4/32

프로세스란?

실행중인 프로그램 = 프로세스.
중요한건 프로세스의 컨텍스트. 프로세스의 컨텍스트엔 아래와 같은 정보들이 담겨있다.

  • cpu의 수행상태를 나타내는 하드웨어 컨텍스트
    a. PC(프로그램 카운터)
    b. 각종 레지스터
  • 프로세스 주소 공간
    1. stack, data, code
  • 프로세스와 커널 관련 자료구조
    1.PCB(Process Control Block)
    2.Kernel

프로세스의 상태

크게 세가지로 나뉜다

  • Running : 실행중임
  • Ready : CPU를 기다리는중. 필요한 데이터는 준비해뒀다.
  • BLocked(wait, sleep) : IO작업이나 프로세스가 요청한 이벤트에 의해 기다리는중. 디스크에서 읽어오는중.

프로세스 컨텍스트 스위칭

한 프로세스만 주구장창 실행되는게 아니다. 고로 프로세스를 번갈아가며 실행하는데, 그때마다 정보를 교환해줘야 이전 프로세스의 정보를 알 수있다.

PCB

프로세스당 유지해야하는 정보들이다. 참고로 PCB는 커널의 data부분에도 들어간다!

헷갈리는 점

시스템 콜이나 인터럽트에 의해 무조건 발생하는것이 아니다.
다른 프로세스로 넘어갈때 발생!
컨텍스트 스위칭이 일어나면, 캐시메모리는 삭제된다.
=> 프로세스가 바뀌어서 참조하는 정보가 다르기때문


프로세스 스케쥴링

프로세스가 실행되는 순서를 나타낸 도식도

스케줄러

한정적인 자원을 어떻게 분배할건지 나타낸다.
시분할 시스템을 사용하는 현대의 운영체제에선 장기스케줄러 사용x 그냥 ready상태(메모리 적재)로 넘김. 너무 소요시간이 길어서!

  • 장기 스케줄러 : CPU를 제외한 자원 분배
  • 단기 스케줄러 : CPU 자원. 왜냐하면 CPU의 처리속도는 짧은시간에 가능하니까!
  • 중기 스케줄러 : 메모리에서 디스크로 쫒아내버림. 메모리를 뺏어!
  • degree of multiprogramming : 메모리에 올라간 프로세스의 수

프로세스의 상태 추가.

위의 세 상태 말고, suspended(stoped)가 있다.
외부에서 프로세스를 정지시켜놓은 상태! 즉 중기스케줄러가 디스크로 쫒아낸 상태. 아니면 사용자가 잠시 프로세스를 중지시킨 상태.
blocked하고 suspended를 구분하자. 자신이 신청한것 vs 남이 쫓아낸것!


프로세스에 대해 많은걸 배웠다.
1. 프로세스란?
2. 프로세스의 스케줄링(스케줄링이라는 단어까지)
3. 프로세스의 상태.
4. 프로세스의 동작 과정.(컨텍스트 스위칭)

프로그램이 어떻게 하드웨어에서 동작하는지 학습했다!


쓰레드란?

프로세스 안에 존재하는 개념.
프로세스 내부에 CPU 수행 단위가 여러개 있을때 쓰레드라고 부른다.
쓰레드PC스택을 개인적으로 할당받는다!

프로세스마다 주소공간과 PCB가 생긴다.
스레드는 그 안에 여럿으로 나뉨.

쓰레드의 장점!

  • 프로세스의 자원을 공유해서 주소공간의 낭비를 막을 수있다
  • CPU수행에 관련된 정보는 별도로 갖는다.(ProgramCounter, Register)
  • 스레드가 여러개면, 한 스레드가 Blocked되도 다른 스레드가 실행해서 빠른 처리를 할 수있다!
  • 다중스레드가 협력하여 동일한 일을 처리해 성능향상을 꾀할 수있음
  • 병령설 향상
  • 컨텍스트 스위칭이 불필요함!

responsiveness는 들을수록 JS의 비동기 동기 시스템과 비슷하다.
비슷하니까 그런 이름을 붙인거겠지?

profile
모르는 것을 모른다고 하기

0개의 댓글