[운영체제] 9. CPU 스케쥴링 알고리즘 (3)

이호용·2021년 4월 9일
0

운영체제

목록 보기
8/12

아래 내용들은 양희재 교수님의 운영체제 강의를 듣고 정리한 내용입니다.

1. Multilevel Queue Scheduling

  • 레디큐를 여러개 만들어서 작업별로 레디큐 그룹을 나눠줌(마우스 움직이는 작업 같은건 빨리해줘야 사용자가 안답답하니까, 우선 적으로 처리하는 큐를 만든다)

Process groups

  • System processes : os가 하는 프로세스, (os가 하는거라 우선순위가 높음...?.. 시스오픈, 시스리드 같은 처리들)
  • Interactive processes : 사용자와 대화하는 프로그램 (게임 같은거)
  • Interactive editing processes : 대화형중에 가장 대표적인건 워드프로세서 같은거, 타이핑이 대화하는거임(편집하는 프로그램)
  • Batch processes : 사용자와 대화하지 않음(컴파일 시키면 그냥 컴퓨터가 알아서 작업함)
  • Student processes : 기타등등 이런것도 있다...

Single ready queue → Several separate queues

  • 각각의 Queue 에 절대적 우선순위 존재
  • 또는 CPU time 을 각 Queue 에 차등배분
  • 각 Queue 는 독립되게 스케줄링 가능

2. Multilevel Feedback Queue Scheduling

복수 개의 Queue

다른 Queue 로의 점진적 이동

  • 모든 프로세스는 하나의 입구로 진입
  • 너무 많은 CPU time 사용 시(큐에 들어온지 오래 되었는데 해당프로세스가 안끝나면) 다른 Queue 로
  • 기아 상태 우려 시 우선순위 높은 Queue 로

Process Creation

프로세스는 프로세스에 의해 만들어진다!

– 부모 프로세스 (Parent process)
– 자식 프로세스 (Child process)

cf. Sibling processes (부모가 같은 프로세스)

– 프로세스 트리 (process tree)

Process Identifier (PID) : 프로세스의 이름

– Typically an integer number – cf. PPID

프로세스 생성

– fork() system call : - 새로운 프로세스를 만듬, 부모 프로세스 복사
– exec() : – 실행파일을 메모리로 가져오기

  • fork를 통해 프로세스 틀을 새로 만들고, 새로 적용할 램을 가지고 옴.

컴퓨터가 부팅을 하면, os를 불러오고 그후 init이라는 프로세스를 램에 올린다.(유닉스에서는 init이라고 하는데 운영체제가 다르면 다른 프로그램임.) 그후 init 이 자식 프로세스를 만들고, 또 fork하면 하나의 프로세스를 더 만든다.

Process Termination

프로세스 종료

  • exit() system call
  • 해당 프로세스가 가졌던 모든 자원은 O/S 에게 반환
    (메모리, 파일, 입출력장치 등)

쓰레드 (Thread)

쓰레드 (Thread)

  • 프로그램 내부의 흐름, 맥
  • 아래처럼 코드가 있으면 순차적으로 코드가 진행된다.
  • 하나의 프로그램에는 최소 하나의 맥이 있다.
class Test {
public static void main(String[] args) {
int n = 0;
int m = 6;
System.out.println(n+m);
while (n < m)
n++;
System.out.println("Bye");
}

Multithreads

다중 쓰레드 (Multithreads)

  • 한 프로그램에 2개 이상의 맥
  • 맥이 빠른 시간 간격으로 스위칭 된다 ⇒ 여러 맥이 동시에 실행
    되는 것처럼 보인다 (concurrent : 여러 쓰레드들을 빠르게 스위칭하며 동시에 일어나는거 처럼 보임 vs simultaneous : 실제로 두개의 쓰레드들을 처리중, cpu가 두개 이상있어야 가능함.)

다중 쓰레드 예

  • Web browser (화면 출력하는 쓰레드 + 데이터 읽어오는 쓰레드)
  • Word processor (화면 출력하는 쓰레드 + 키보드 입력 받는 쓰레드 + 철자/문법)
  • 오류 확인 쓰레드(음악 연주기, 동영상 플레이어, Eclipse IDE, …)

single vs multi

  • 단일 쓰레드 (single thread) 프로그램 : 한 프로세스에는 기본 1개의 쓰레드
  • 다중 쓰레드 (multi-thread) 프로그램 : 한 프로세스에 여러 개의 쓰레드

쓰레드 구조

  • 프로세스의 메모리 공간 공유 (code, data)
  • 프로세스의 자원 공유 (file, i/o, …)
  • 비공유: 개별적인 PC(프로세스에서 쓰레드가 가리키는 위치), SP(스텍포인트), registers, stack

0개의 댓글