수업을 듣기전 C와 자료구조에 대한 기본적인 개념 필요!
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 요소 및 그 알고리즘의 핵심적인 부분에 대해 기초부터 학습한다.
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
전공자 입장에선 보통 커널을 의미함
위 그림에서 볼 수 있듯이, 두 가지의 목표가 있다.
사용자의 입장: 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공. 즉, 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행해줌
전공자의 입장: 컴퓨터 시스템의 자원을 효율적으로 관리하는것이다.
여기서 말하는 자원이란 프로세스(CPU), 메모리, 기억장치, 입출력 장치등을 말한다.
자원의 효율적 관리란?
동시 작업 가능 여부
사용자의 수
처리 방식
일괄 처리(batch processing)
- 작업 요청의 일정량 모아서 한꺼번에 처리
- 작업이 완전 종료될 때까지 기다려야함(옛날 컴파일러 하루 지나야 결과가 나옴)
현대의 운영체제에 적합하지 않음
시분할(time sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 식나 단위로 분할하여 사용
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
- interactive한 방식
현대의 운영체제
실시간
정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간시스템을 위한 OS
ex) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
시분할과 비슷해보이지만, 프로그램이 동작하기 위해 정확한 시간이 필요로 하는 운영체제
실시간 시스템의 개념 확장
- Hard realtime system(경성 실시간 시스템)
- Soft realtime system(연성 실시간 시스템)
Multitasking
: 컴퓨터 전반에서 하나의 프로그램이 끝나기전에 다른 프로그램이 컴퓨터에서 실행이 가능한것을 말함
Multiprogramming
: 여러 프로그램이 메모리에 올라가 있음을 강조
Time sharing
: CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조
Multiprocess
: 여러 프로그램이 동시에 실행
Multiprocessor
: 하나의 컴퓨터에 CPU가 여러 개 붙어 있음을 의미
MS Windows
- 다중 작업용 GUI 기반 운영 체제Handheld device
를 위한 OSCPU가 한개일때 작업이 긴 것이 있으면 나머지 작업은 오래 기다려야 하는데 이를 해결하는 방법?
위와 같은 고민을 한 결과 → CPU 스케줄링
프로그램이 너무 많아서 메모리에 조금씩 밖에 못올라와있다면 프로그램을 실행시킬때마다 디스크에 가서 불러옴 → 원할한 동작 불가
메모리 관리의 필요성
디스크를 읽을때 헤드가 움직이기 때문에 이를 더 효율적으로 읽어들이는 방법?(움직임을 최소화 하면서 많은 요청을 빨리 처리하는 방법을 알아야 함)
파일 관리를 효율적으로 하는 방법
I/O device
를 어떻게 관리할 것인가? → 컴퓨터에 비해 훨씬 느림
컴퓨터와 통신하기 위해 인터럽트라는 것을 사용하여 CPU에게 무언가 작업할 것이 있음을 알림
입출력 관리
OS 사용자 관점이 아닌 OS 개발자 관점에서 수강!
본인을
Windows XP
나Linux
같은 운영체제라고 생각하고 무엇을 해야하는지 생각해보면 내용을 이해하기 편할 것이다.