OS - [1]하드웨어 시스템 구조와 프로그램 작동 방식

운영체제(Operating System)란?

운영체제 정의 및 목적

컴퓨터는 한정된 자원으로 여러가지 프로그램을 수행한다.
여기서 말하는 컴퓨터의 자원(resource)이란, 하드웨어 자원(hardware resources)인 CPU, 메모리(ram), 디스크 및 각종 입출력 장치와, 소프트웨어 자원(software resources)인 프로세스(process), 파일(file), 메시지 등을 말한다.
운영체제는 컴퓨터의 하드웨어 및 소프트웨어 자원을 효율적으로 관리하는 관리자(Manager)이다. 사용자는 한정된 cpu, ram 자원으로 다양한 프로그램들을 실행하는데, 운영체제는 cpu, ram 등의 컴퓨터 자원을 가장 효율적으로 프로그램에게 분배한다. 따라서 컴퓨터 실행의 효율성을 최대화하는 것이 운영체제가 존재하는 이유다.

운영체제 종류

  • unix 계열 (ex. linux)
    • 대형 컴퓨터, 즉 서버용 운영 체제. 여러 계정이 함꼐 사용하기 용이.
  • microsoft 계열 (es. windows)
    • 개인 컴퓨터용 운영 체제.

운영체제 역할

  • CPU 스케줄링: 누구에게 CPU 제어권을 줄까?
  • Memory 관리: 누구를 Memory에 올려 놓고 누구를 쫓아낼까?
  • File 관리: Disk에 File을 어떤 방식으로 저장할까?
  • I/O Device 관리: 입출력 장치(I/O Device)와 컴퓨터 사이에 정보를 어떻게 주고 받을까?
  • Process 관리
  • 보호 시스템

컴퓨터 시스템 구조 (Hardware System Structure)

img

출처: 이화여자대학교 반효경 교수님 운영체제 강의

CPU, 메모리, I/O 장치 기준으로 설명

CPU

CPU는 매 클럭(clock)마다 메모리의 명령(instruction)을 가져와 계산한다. CPU의 레지스터(register)가 메모리의 주소값으로 instruction에 접근해 기계어(assembly language)를 읽는다.

CPU의 작업 흐름

ig

  1. 메모리에 올라온 “programA”의 instruction을 실행
  2. 작업 실행 중 입출력 장치 (I/O device)에게 요청할 일이 생기면, device controller에게 작업 요청. (ex. 키보드의 device controller = device의 자체 cpu)
  3. 입출력 장치가 작업을 완료하면 응답값을 local buffer로 보냄.
  4. 입출력 장치가 작업을 끝날때가지, CPU는 다른 프로그램인 “programB”를 처리한다. 이렇게 CPU가 작업을 쉬지 않고, 여러 프로그램을 번갈아가며 처리하는 방식을 time sharing이라고 함. (“CPU never stops working!!!”)

Mode bit

CPU의 처리 상태(=mode)를 binary(=bit)로 표현.

Mode bit Mode type description function
0 커널 모드 (kernel mode) 운영체제(os)가 CPU 통제권을 갖고 있음 모든 instruction 실행 가능 (I/O device controller도 실행 가능)
1 사용자 모드 사용자 프로그램이 CPU 통제권을 갖고 있음 한정된 instruction만 실행 가능 (보안 목적)

타이머(Timer)

CPU는 여러 사용자 프로그램을 time-sharing으로 실행. 따라서 특정 프로그램이 CPU를 독점적으로 사용하는 것을 방지하기위해 프로그램마다 타이머를 설정함.
타이머는 매 클럭마다 1씩 감소하며, 타이머가 종료되면 interrupe 발생되 CPU 제어권이 운영체제로 넘어간다. 즉, interrupt가 발생되면 mode bit이 1에서 0으로 변한다.

인터럽트(Interrupt)

img 인터럽트가 발생하면 mode bit이 1에서 0으로 변한다. 즉, CPU 제어권이 프로그램에서 운영체제로 넘어가는데, 이 때 인터럽트 시점의 register를 저장한 후 제어권을 넘긴다.

인터럽트 종류

  • 하드웨어(hardware) 인터럽트
    • 타이머 인터럽트 : 프로그램의 타이머가 종료됨
    • I/O device controller 인터럽트 : 입출력 장치 처리가 완료
  • 소프트웨어(softwrae) 인터럽트 (=Trap)
    • Trap : 사용자 프로그램이 운영체제가 제공하는 서비스(예를 들어 I/O device 요청)를 받기위해 커널 함수를 호출 (= 시스템콜(system call))

입출력 장치(I/O device)

I/O device controller

입출력 장치를 제어하는 일종의 cpu이며 I/O 작업이 완료되면 interrupt를 걸어 cpu 제어권을 운영체제로 변경함.

VS device driver: 하드웨어인 device controller와 다르게, 운영체제에게 입출력 장치 처리 루틴을 알려주는 소프트웨어

local buffer

I/O 작업이 끝나면 결과물이 저장되는 공간. 일종의 메모리.

DMA controller

I/O device 처리가 끝나 interrupt가 실행되면, 운영체제가 I/O device local buffer의 값을 메인 메모리에 복사한다. 만약 여러대의 I/O device와 작업하면 device의 작업이 종료될때마다 interrupt가 발생하게되어 오버헤드가 발생함. 이런 오버헤드를 없애기 위해 DMA(direct memory access) controller가 존재.

원칙상 메인 메모리 접근은 CPU만 가능하지만, 위 문제를 해결하기위해 DMA controller도 메인 메모리에 직접 접근해 local buffer의 데이터를 복사 가능. 이로써 I/O 작업이 여러개 완료된 경우, DMA controller가 바이트 단위의 데이터를 반복해 옮긴 후 블럭 단위에서 interrupt를 한 번만 걸면 된다.

시스템 콜(system call)

I/O device에 작업 요청은 특권 명령으로 mode bit이 0일 때만 가능. 즉, 운영 체제만 할 수 있는 작업. 하지만 CPU가 사용자 프로그램을 처리 중 I/O device에 작업을 요청할 경우가 생길 땐 커널 함수를 호출해 mode bit을 1로 바꾸는데, 이를 시스템콜이라고 한다. 시스템콜이란 소프트웨어 인터럽트, 즉 trap을 실행하여 CPU 제어권을 운영체제로 바꾸는 작업을 말한다.

메모리(Memory)

주저장장치(Primary)

CPU가 직접 접근 가능한 바이트 단위의 저장 장치 특징: 빠른 데이터 접근 속도, 적은 저장 용량, 휘발성(=컴퓨터 끄면 데이터 사라짐)

  • 레지스터 (register): 메모리의 주소값이 저장
  • 캐시 (cache) : 메인 메모리 중 가장 사용이 빈번한 데이터 저장 (재사용의 목적)
  • 메인 메모리 (memory)

보조저장장치(Secondary)

CPU 접근 불가. 섹터 단위로 저장됨.

  • HDD
  • SSD

프로그램 실행 (Program Execution)

Reference

이화여자대학교 반효경 교수님 운영체제 강의