티스토리 뷰
운영체제란 무엇인가?
운영체제란?
- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
- 사용자, 사용자 , ... , 소프트웨어, 사용자 .. → 운영체제 → 하드웨어
좁은 의미의 운영체제 - 커널
- 운영체제의 핵심 부분으로 메모리에 상주하는 부분
- 컴퓨터에서 항상 돌아가는 프로그램
- 소프트웨어에서 운영체제는 커널을 일컫는다
넓은 의미의 운영체제
- 커널 뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념
- 예를들어 윈도우를 설치하게 되면 커널만 존재하는 것이 아니라, 메모리에 상주하지 않는 파일 복사 기능등 다양한 유틸리티가 포함되어 있다
운영체제의 목적
- 컴퓨터 시스템의 자원을 효율적으로 관리
- 사용자간의 형평성 있는 자원 분배
- 주어진 자원으로 최대한의 성능을 내도록 분배
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
- 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는것 같은 환상(가상환경)을 제공
자원이란?
- CPU, 메인 메모리, 입출력 장치 등 하드웨어 자원
- 프로세스, 파일, 메시지 등의 소프트웨어 자원
운영체제의 분류
동시 작업 가능 여부
- 단일 작업 - 한번에 하나의 작업만 처리
- 예) MS-DOS 프롬프트상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없다
- 다중 작업
- 동시에 두개 이상의 작업 처리
- 예) UNIX, MS Windows, MAC OS 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있다
사용자의 수
여러 사용자가 동시에 하나의 컴퓨터에 접근할 수 있는가 없는가에 따라서 구분
- 단일 사용자
- MS-DOS, MS-Windows
- 다중 사용자
- UNIX, NT server
처리방식
- 일괄처리 (batch processing)
- 작업 요청의 일정량 모아서 한꺼번에 처리
- 작업이 완전 종료 될 때까지 기다려야한다
- 프로그래밍을 할때 ORM카드 같은 카드를 만들어서 전산서에 제출하면 그것들을 모아서 처리 후 결과를 통보
- 시분할 방식 (time sharing) - 대표적인 방식
- 여러 작업을 수행할 할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 일괄 처리 시스템에 비해 응답시간이 짧다 (1초 이내)
- interactive(즉각적인 상호작용)한 서비스를 받을 수 있다
- 시분할 방식임에도 데드라인이 중요시되는 프로그램이 늘어나고 있다
- ex) 네비, 블랙박스 (사고 당시에 블박이 안되거나, 우회전해야할 타이밍에 알려주지 못하는 일이 있어서는 안된다)
- 메모리에서 실행중인 프로그램 = process (운영체제로 부터 자원을 할당받는 작업의 단위)
- CPU scheduling : multi process 중 처리할 프로세스를 선택하는 작업
- 실시간 (Realtime OS)
- 정해진 시간(dead line) 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
- 예) 원자로/공장 제어, 미사일 제어, 반도체 장비 파이프라인 등
- Hard realtime system / Soft realtime system 개념으로 확장
용어
Multi-tasking
- 하나의 프로그램이 끝나기전에 다른 프로그램이 동시에 실행이 가능한 것
Multi-programming
- 메모리에 동시에 여러 프로그램이 올라가는 것
Time sharing
- 컴퓨터 처리 능력을 일정 시간 단위로 분할하여 여러 프로그램을 실행
Multi-Process
- 프로세스(실행중인 프로그램)가 동시에 여러개가 실행되는 것
결국 위 4가지 용어는 모두 결국 하나의 CPU에서 여러개의 프로그램이 돌아간다는 의미이다
Multi-Processor
- 하나의 컴퓨터에 CPU(Processor)가 여러개 붙어 있음을 의미한다
- 각 cpu마다 각각의 프로그램이 실행되는것이 가능하다
운영체제의 예
UNIX
- 코드의 대부분을 C언어로 작성 (유닉스 운영체제를 만들기 위해 만들었다)
- 높은 이식성
- 최소한의 커널(메모리에 상주하는 운영체제의 핵심 부분) 구조
- 복잡한 시스템에 맞게 확장 용이
- 소스 코드를 공개 → Linux 등 다양한 버전이 생성되었다
DOS
- MS사에서 IBM-PC를 위해 개발
- 단일 사용자용 운영체제, 메모리 관리 능력의 한계 (주기억 장치 : 640Kb)
Windows
- MS사의 다중 작업용 GUI(graphic user interface)기반 운영체제
- Plug and Play, 네트워크 환경 강화
- DOS용 응용 프로그램과 호환성 제공
운영체제 구조
CPU ←→ Memory ←→ Disk & I/O device
Q. 어떤 프로그램한테 CPU를 할당해야할까? - CPU 스케쥴링
-> 그냥 순서대로 주면 안되나?
A. 만약, 오래걸리는 작업이 cpu를 점유하면 나머지 작업들은 진행되지 못하고 멈추게 된다. 따라서 각 작업마다 짧게 번갈아가면서 주고, 이때도 작업이 빠른 업무를 먼저 처리하게 하는 등 효율적인 처리를 해야한다
Q. 어떤 프로그램한테 얼마나 메모리를 할당해야할까? - 메모리 관리
→ 똑같이 1/N으로 나눠주면 안되나?
A. 프로그램의 수가 많아진다고 그 수만큼 모두 나눠서 주게되면 결국 전체적으로 모두 느려지게 되는 결과가 나오게된다. 따라서 프로그램이 원활이 돌아가는 적절한 메모리양은 보장해주고 다른 프로그램의 할당은 잠시 줄여주는 방식 등으로 진행하게 된다
Q. 디스크에서 메모리를 읽어와서 메모리에 넣어야할 때 메모리가 가득차있다면 무엇을 빼야할까? -> 페이지 교체 알고리즘
재사용의 가능성이 높은 메모리를 남겨놔야하는데 미래를 어떻게 알까
A. 해당 데이터가 메모리에 올라온 이후로 사용 횟수가 잦은건 남기고 적은건 빼는 방식 등이 있다
Q. 디스크에 파일을 어떻게 보관해야할까? → 파일관리, 디스크 스케쥴링
A. 디스크의 파일이 요청되었을 때, 저장된 물리적 위치가 헤더와의 위치에 맞춰서 처리하게 된다. 즉 헤더의 움직임을 최소화하면서 최대한 빨리 요청을 처리하는지가 중요하다. 먼저 온 요청대로 하는 것이 아니라, 최대한 효율적으로 디스크를 읽는 것이 중요한것
Q. I/O 디바이스를 어떻게 관리할까? → 입출력 관리
A. 각기 다른 입출력 장치와 컴퓨터간에 어떻게 정보를 주고받을지, cpu를 방해하지 않으면서 원활히 입출력이 이뤄지도록 한다
소프트웨어로서 프로그램관리
- 프로세스 관리
- 프로세스의 생성과 삭제
- 자원 할당 및 반환
- 프로세스간 협력
OS 개발자 관점에서 공부하자 - 내가 곧 컴퓨터 시스템 운영체제
대부분의 알고리즘은 OS 프로그램 자체의 내용
인간의 신체가 뇌의 통제를 받듯, 컴퓨터 하드웨어는 운영체제의 통제를 받으며 그 운영체제는 사람이 프로그래밍한다. 내가 어떻게 통제할 것인지, 할일은 무엇인지 생각하면서 운영체제를 배우자
'CS > 운영체제 정리' 카테고리의 다른 글
3주차. 프로세스의 연산 - fork(), exec()... 와 IPC (0) | 2021.09.24 |
---|---|
3주차. Thread 정리 (0) | 2021.09.24 |
3주차. Process 정리(문맥교환, 상태, PCB, 스케쥴러) (0) | 2021.09.24 |
2주차. System Structure & Program Execution 2 (0) | 2021.09.17 |
2주차. System Structure & Program Execution 1 (0) | 2021.09.17 |
- Total
- Today
- Yesterday