[운영 체제] Overview

이정연·2022년 12월 5일
0

ComputerScience

목록 보기
1/13

본 포스팅은 이화여자대학교 KOCW 공개 강의 [운영체제]를 참조하여 작성하였습니다.

Why?

  • 운영체제는 컴퓨터 시스템의 자원을 효율적으로 관리하기 위하여 존재한다.
  1. 사용자들에게 형평성 있는 자원 분배
  2. 주어진 자원으로 최대한의 효율 추구

처리 방식

일괄 처리(batch processing)

  • 작업양을 모아서 한꺼번에 처리
  • 작업이 완전히 종료될 때까지 기다려야 함

시분할(time sharing)

  • 여러 작업들을 동시에 실행하는 것처럼 보이게 함
  • 각 태스크에게 시간을 쪼개어 할당

실시간(Realtime OS)

  • 종료시각이 반드시 보장되어야 하는 OS
  • Ex) 원자로 제어, 반도체 공장, 미사일 제어

Hard Realtime System

  • 데드라인을 반드시 맞추어야 하는 시스템

Soft Realtime System

  • 데드라인이 존재하긴 하지만 못 맞추더라도 치명적인 피해는 X
  • Ex) 영화

컴퓨터 시스템 구조

  • CPU는 메모리에서만 값을 읽어들인다.
  • mode bit: 현재 프로그램이 OS인지 사용자 프로그램인지 구분
    1: 사용자 모드 👉🏻 특정 instruction만 수행 가능
    0: 커널 모드 👉🏻 모든 instruction 수행 가능
  • interrupt line: instruction 구분을 위하여
  • CPU는 instruction을 기준으로 명령을 실행
  • timer: 특정 프로그램의 CPU 독점 방지
  • I/O device는 사용자 프로그램이 제어할 수 없다. 따라서 운영체제에게 CPU를 넘기고 대신 제어하도록 한다.
  • I/O device가 CPU에게 너무 많은 interrupt를 거는 것을 방지하기 위하여 DMA controller가 존재
  • I/O device의 내용을 CPU로 거치지 않고 DMA controller가 직접 memory에 접근하여 수정
  • memory controller: CPU와 DMA의 교통정리

Interrupt

  • 인터럽트 당한 시점의 Program Counter(이하 PC)를 저장 후 CPU 제어를 인터럽트 처리 루틴에 넘김

종류

  • 하드웨어 인터럽트: Interrupt라고 불림
  • 소프트웨어 인터럽트: Trap이라 불림

    Exception: 프로그램이 오류를 범한 경우
    system call: 프로그램이 커널을 호출한 경우

Synchronous vs Asynchronous

정석적인 표현 방식이 아닌 내가 이해한 바로, 내가 기억하기 좋게 정리함

  • 영화를 볼 때 "씽크가 맞지 않는다."라는 표현을 사용함
  • 위 문장을 풀어 서술하면 "화면과 소리의 타이밍이 맞지 않는다."
  • A 화면이 출력될 때 A 소리가 출력되어야 하는데 씽크가 깨지면 A 화면이 나오지도 않았는데 A 소리가 나옴. 이것이 Async
  • 다시 말해, sync는 시간과 관계 없이 I/O의 입출력을 온전히 받아들이고 동작하는 방식이고
  • async는 I/O의 입출력이 정상적으로 들어왔든 그렇지 않든 시간이 다 되면 동작하는 방식

프로그램 실행 과정

  • 각각의 실행파일들에게 가상 메모리 부여
  • 가상 메모리들 중에서 필요한 부분만 실제 메모리에 탑재
  • 실제 메모리의 공간 부족을 대비하여 Swap area 존재
  • File system은 전원 유무와 관계 없이 파일 저장
  • Swap area는 전원 차단시 파일 휘발

커널 주소 공간의 내용

프로세스

프로세스는 [실행 중인 프로그램]이다.

프로세스의 문맥

  • 프로세스의 문맥은 왜 필요할까?
  • 위 그림과 같이 3가지 상황을 가정해보자.
  1. 기존 프로세스를 실행하고 있다가 시스템 콜
  2. 커널에서 작업을 끝낸 후 다시 프로세스로 복귀
  3. 1번에서 했던 instruction을 이어 받아야 함

마지막으로 했던 instruction의 위치를 파악(문맥을 파악)해야 그 다음 명령어를 수행 가능하다!

프로세스 상태도 초안

  • running: CPU를 잡고 instruction을 수행중인 상태
  • ready: CPU를 기다리는 상태
  • waiting: CPU를 주어도 instruction을 수행할 수 없는 상태

    Ex) 디스크에서 파일을 읽어오는 경우

  • new: 프로세스가 생성 중인 상태
  • terminated: 수행이 끝난 상태

PCB

Process Control Block

  • Why? 운영체제가 프로세스를 관리하기 위하여
  • 프로세스의 문맥을 파악하는 용도로 사용!

  • 프로세스 A 👉🏻 프로세스 B
  1. 프로세스 A의 문맥을 PCB에 저장
  2. 프로세스 B의 문맥을 PCB에서 불러옴
  3. CPU 실행

구조체

  1. 운영체제가 관리상 사용하는 정보
  2. CPU 수행 관련 하드웨어 값
  3. 메모리 관련
  4. 파일 관련

스케줄러

장기 스케줄러

job scheduler

  • 시작 프로세스 중 어떤 것을 ready queue로 보낼지 결정
  • 메모리에 어떤 프로세스를 할당할 것인가?
  • degree of multiprogramming 제어

    degree of multiprogramming이란?
    메모리에 프로세스를 얼마나 적재할 것인지 조율하는 이슈

  • time sharing에는 장기 스케줄러가 없음 , 바로 ready queue에 올라감

단기 스케줄러

CPU scheduler

  • 어떤 프로세스를 running 시킬지 결정
  • 어느 프로세스에 CPU를 할당할 것인가?

중기 스케줄러

Swapper

  • 메모리에서 어떤 프로세스를 뺄 것인가?
  • degree of multiprogramming 제어

blocked와 suspended의 차이

  • blocked는 자의적이고 suspended는 타의적이다.
  • I/O event를 위하여 스스로 CPU를 내어준 것은 자의적이므로 blocked 상태
  • 중기 스케줄러에 의하여 메모리를 뺏겨 프로세스 수행이 정지되면 suspended 상태

최종 프로세스 상태도

스레드

스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
lightweight process

  • 스레드 상호 간 코드와 데이터만 공유
  • 스택은 별도 부여

언제?

  • 스레드는 같은 일을 하는 프로세스를 여러 개 실행하고 싶을 때 사용한다.
  • 동일한 프로세스를 여러 개 생성하면 메모리 낭비가 심하므로 하나의 프로세스에서 여러 개의 스레드로 쪼개어 실행하면 동일한 효과 발생
profile
0x68656C6C6F21

0개의 댓글