[운영체제] 2주차 공부

김서영·2021년 9월 18일
0

운영체제 스터디

목록 보기
2/10

운영체제(Operating System)

소개

컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

  • 협의의 운영체제(커널)
    운영체제의 핵심 부분으로 메모리에 상주하는 부분
  • 광의의 운영체제
    커널 뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념

목적

  1. 하드웨어를 몰라도 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공

  2. 자원을 효율적으로 관리

  • CPU, Memory, I/O 장치 등을 효율적으로 관리
  • 실행 중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당
  • 실행 중인 프로그램들에게 메모리 공간을 적절히 분배

분류

이 수업에서는 다중 작업, 다중 사용자, 시분할 방식을 택함.

  • 동시 작업 가능 여부
  • 사용자의 수
  • 처리방식



    Hard realtime system의 예시 : 원자로/공장 제어, 미사일 제어
    Soft realtime system : 동영상 스트리밍 서비스

용어

Multitasking / Multiprogramming / Time sharing / Multiprocess 는 모두 컴퓨터에서 여러 작업을 동시에 수행하는 것을 말함.
다만 Multiprogramming은 여러 프로그램이 메모리에 올라가 있음을 강조.
Time Sharing은 CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조.

다만 Multiprocessor는 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미


예시

  • 유닉스(UNIX)
  • DOS(Disk Operating System)
  • MS Windows
  • Handheld device를 위한 OS

구조

컴퓨터 시스템 구조

Mode bit

CPU가 사용자 프로그램에게 넘어가면 운영체제는 아무것도 할 수 없기 때문에 CPU를 누가 쓰고 있는지 표시.
사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위해 보호 장치가 필요.

1 사용자 모드 : 사용자 프로그램 수행
0 모니터 모드 : OS 코드 수행

  • 보안을 해칠 수 있는 중요한 명령어는 모니터 모드에서만 수행 가능한 '특권명령'으로 규정.
  • Interrupt나 Exception이 발생시 하드웨어가 mode bit을 0으로 바꿈.
  • 사용자 프로그램에게 CPU를 넘기기 전에 mode bit을 1로 셋팅.

Timer

정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 interrupt 발생.
(CPU를 특정 프로그램이 독점하는 것을 보호)
Time sharing 구현과 현재 시간 계산을 위해서도 사용.

시스템콜 (System Call)

모든 I/O장치들에게 CPU가 요청하는 것은 특권 명령임. 따라서, 운영체제에게 요청해야함. (System call)
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것.

Device Controller

I/O device Controller
  • 해당 I/O 장치유형을 관리하는 일종의 작은 CPU
  • 제어 정보를 위해 control register, status register를 가짐.
  • local buffer를 가짐 (일종의 data register)

I/O는 실제 device와 local buffer 사이에서 일어남.
Device Controller는 I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알림.

Device driver(장치구동기)

OS 코드 중 각 장치별 처리 루틴 -> software
CPU가 I/O Controller에게 부탁을 할 때 사용되는 소프트웨어

Device controller(장치제어기)

각 장치를 통제하는 일종의 작은 CPU -> hardware

Firmware

I/O 장치 안에는 Firmware(펌웨어)가 들어감. CPU에게 받은 명령어를 수행하게 하는 소프트웨어

Interrupt

현대의 운영체제는 interrupt에 의해 구동.
Timer interrupt라면, CPU를 다른 프로그램에게 넘겨줌.
Device controller에서 들어온 interrupt라면, 요청한 정보를 가지고 그 이후에 해야할 일을 진행함.

  • Interrupt를 당한 시점의 register와 program counter를 save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘김.
  • Interrupt (넓은 의미)
    Interrupt (HW interrupt): 하드웨어가 발생시킨 인터럽트
    Trap (SW interrupt) : Exception: 프로그램이 오류를 법한 경우
    System call: 프로그램이 커널 함수를 호출하는 경우

인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고 있음.
인터럽트 처리 루틴(=interrupt Service Routine, 인터럽트 핸들러) : 해당 인터럽트를 처리하는 커널 함수

동기식 입출력과 비동기식 입출력


두 경우 모두 I/O의 완료는 인터럽트로 알려줌.

동기식 입출력(synchronous I/O)
  • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감.
  • 구현 방법 1
    I/O가 끝날 때까지 CPU를 낭비시킴
    매시점 하나의 I/O만 일어날 수 있음
  • 구현 방법 2 (효율적)
    I/O가 완료될 때까지 (현재 사용중이던)해당 프로그램에게서 CPU를 빼앗음
    I/O처리를 기다리는 줄에 그 프로그램을 줄 세움
    다른 프로그램에게 CPU를 줌
비동기식 입출력(asynchronous I/O)

I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감.

DMA (Direct Memory Access)


Interrupt도 일종의 overhead.
원래 입출력이 들어오면 local buffer에 잠시 저장 후, interrupt 발생.
그러면 CPU가 local buffer 속 내용을 copy한 후 memory에 접근해 저장함.(비효율적)

따라서 DMA(Direct Memory Access)를 통해 interrupt가 자주 걸리는 것을 방지.
빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용.
CPU의 중재없이 device controller가 device의 buffer storage의 내용을 메모리에 block 단위로 직접 전송.
바이트 단위가 아닌 block 단위로 인터럽트 발생시킴.
Buffer 속 일정 분량이 채워졌을 때 DMA가 직접 memory에 copy => interrupt 발생.

서로 다른 입출력 기계어

  • 왼쪽은 I/O를 수행하는 special instruction (Memory 접근 기계어 따로, I/O 수행 기계어 따로)
  • 오른쪽은 Memory Mapped I/O (Memory, I/O장치를 접근하는 기계어를 같이 씀. Memory 주소가 I/O까지 연장.)

저장장치 계층 구조

Primary

휘발성, CPU 접근 가능

Secondary

비휘발성, I/O, file system

profile
하지만 저는 이겨냅니다. 김서영이죠?

0개의 댓글