요즘 출근 전 운영체제 강의를 듣고 있다. 컴퓨터공학을 부전공하며 들은 과목이지만, CS 지식은 꾸준히 복습해야 함을 느꼈기 때문이다.
강의는 kocw에서 반효경 교수님, 2014년-1학기 운영체제 강의를 선택했다.
그리운 🌸우리 학교🌸이기도 하고, 명강의로 워낙 유명한 강의다.
마침 작년에 교재가 개편되어 출간되어 구매했다!
오늘은 그동안 들은 내용을 간략하게 정리했다. 말 그대로 TIL을 위한 정리라 부족한 부분도 많다…!
운영체제란?
운영체제란?
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층.
운영체제의 목적
- 컴퓨터 시스템의 자원을 효율적이고 형평성 있게 관리
HW
: 프로세서, 기억장치, 입출력 장치 등SW
: 프로세스, 파일, 메시지 등
- 사용자가 컴퓨터를 편리하게 사용할 수 있도록 지원
운영체제 분류
- 동시 작업 가능 여부: 단일 작업 / 다중 작업
- 지원해주는 사용자 수: 단일 사용자 / 다중 사용자(여러 사용자가 동시에 접속할 수 있는지)
- 처리 방식
- 일괄 처리(
batch processing
) - 시분할(
time sharing
): 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용 - 실시간(
real time
): 정해진 시간 안에 어떤 일이 반드시 종료됨을 보장. 경성 실시간 시스템과 연성 실시간 시스템.
- 일괄 처리(
💡 시분할은 정해진 시간 안에 종료됨을 보장하지 않음. 실시간은 보장함. 실시간은 정확한 시간이 중요요한 특수한 상황에서만 사용. 하지만 점점 스마트폰은 실시간을 보장하는 필요성(네비게이션, 블랙박스 등)이 높아지고 있음.
운영체제의 예
- 유닉스
- 대형 컴퓨터(서버)를 위해 만들어진
- 높은 이식성. 하나의 컴퓨터에서 돌아가는 운영체제를 전혀 다른 기계에 이식할 수 있음.
- 마이크로 소프트
- 개인 컴퓨터를 위해 만들어진
운영체제의 구조
각 자원을 관리
CPU
: 어떤 프로그램에게 CPU를 줄까? CPU 스케쥴링. 일상 생활처럼 먼저 온 프로그램을 먼저 처리하면 작업들이 CPU를 안 놓게 되고, 성능 좋은 CPU도 못 쓰게 되니 시간을 잘 분배memory
: 한정된 메모리를 어떻게 쪼개 쓸까? 최근에 또 사용할 가능성이 많은 데이터는 뭘까? 오랫동안 안 쓴 데이터는 언제 내쫓을까?disk
: 디스크에 파일을 어떻게 보관할까? 마치 엘리베이터. 엘리베이터는 지금 몇 층에 있는데, 눌려 있는 층이 중구난방인 경우 어디를 먼저 가서 한꺼번에 처리하는 게 효율적일까?io device
: 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고 받지? io 디바이스는 대부분 느린데 CPU랑 어떻게 소통하지?- 프로세스 관리
- 그외: 보호 시스템, 네트워킹, 명령어 해석기 …
System Structure & Program Execution
컴퓨터 내부 구조
Computer
CPU
Memory
CPU
의 작업 공간CPU
에서 일(기계어를 실행)을 하려면, 매순간(매 clock cycle) 마다 메모리에서 기계어(instruction)를 하나씩 읽어서 실행OS
도 메모리 위에 올라가 있는 프로그램 중 하나. timer를 기반으로 다른 프로그램에게CPU
를 넘겨주는 역할도 함
I/O Device
Disk
: input / output 두 가지 역할 동시에Input device
: 키보드, 마우스, …Output device
: 프린터, …- 공통:
device controller
- Device 마다 각 디바이스를 관리하는 작은 CPU, Device controller가 붙어 있음
- Device controller도 자기만의 작업 공간이 필요, 그것이 Local buffer
- CPU는 일을 수행하다가 Disk에 데이터를 요청해야 하면 직접 요청하는 게 아니라 Device controller 통해서 요청
Mode bit
지금 CPU
가 사용자 프로그램(사용자 모드, 1)을 수행 중인지, OS(모니터 모드, 0)를 사용 중인지 구분하는 bit.
Mode bit이 0일 때는 모든 instruction, 즉 io device 접근하는 instruction을 포함한 모든 set에 접근할 수 있고. 1은 제한된 instruction만 접근 가능. → 보호 장치를 위해!
Timer
특정 프로그램이 CPU
를 독점하는 걸 방지하기 위해서. 시간이 다 되면 CPU
에게 인터럽트.
참고자료
본문 속 링크 참조