운영체제(Operating System, OS)란?
운영체제란 컴퓨터의 성능과, 사용자의 편의성을 위해 자원을 할당(Resource Allocator)하고 프로그램을 제어(Control Program)하는 시스템소프트웨어다.
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
좁은 의미의 운영체제 = 커널 (Kernel)
- 운영체제의 핵심 부분으로 컴퓨터 전원을 킨 다음 부팅이 된 이후로 메모리에 상주하는 부분
넓은 의미의 운영체제
- 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
운영체제의 목표
컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
- CPU를 빠르게 번갈아 가면서 할당하여 사람들이 느끼기에는 본인 프로그램만 CPU를 점유하여 쓰고 있는 것 같은 느낌
- 메모리 공간 적절히 분배
하드웨어를 직접 다루는 복잡한 부분을 대행
컴퓨터 시스템의 자원을 효율적으로 관리
프로세서, 기억장치, 입출력 장치 등의 효율적 관리 (하드웨어 자원)
- 한정된 하드웨어 자원(CPU, Memory)으로 최대의 성능을 내도록 하는 것
- 사용자간의 형평성 있는 자원 분배
프로세스, 파일, 메시지 등을 관리 (소프트웨어 자원)
운영체제의 예
유닉스 계열의 운영체제
- 대형 컴퓨터를 위해서 만들어진 운영체제
- 멀티 태스킹이 됨
- 여러 사용자들이 서버에 접속해서 사용하는 서버를 위한 운영체제
- C언어를 만들어 이를 이용해 개발
- 소스 코드 공개
- 높은 이식성 : 하나의 컴퓨터에서 돌아가는 유닉스를 기계어 집합이 전혀 다른 컴퓨터에 이식하기 ㅜ시움
- 최소한의 커널 구조 : 커널은 메모리에 상주함. 핵심적인 기능만 커널에 둠
- 복잡한 시스템에 맞게 확장 용이
- 공개 소프트웨어 정신 > 소스 코드 공개 > Linux
MS Windows 운영체제
- 개인용 컴퓨터 PC를 위해 만들어진 운영체제
- 초기에는 단일 사용자, 단일 작업만 지원해주는 운영체제에서 시작
DOS(Disk Operation System)
- MS사에서 1981년 IBM-PC를 위해 개발
- 단일 작업용 운영체제, 메모리 관리 능력의 한계(주 기억장치 : 640KB)
- 하드웨어 발달로 인해 코드가 복잡해지고 누더기 코드가 되버림
MS Windows
- MS사의 다중 작업용 GUI 기반 운영 체제
- Plug and Play, 네트워크 환경 강화
- DOS용 응용 프로그램과 호환성 제공
- 불안정성
- 풍부한 자원 소트트웨어
운영체제의 구조
운영체제의 기본적인 목표는 컴퓨터 시스템의 여러가지 자원(CPU, Memory, HardDisk, I/O Device)을 관리하는 것
CPU : 어떤 프로그램에게 CPU를 할당할 것인가? > CPU 스케줄링
- 먼저 온 순서대로 처리하지 않음
- CPU 자체는 매우 빠름
- 처리되는 작업들이 CPU를 점유하고 안놔주려고 하면 아주 빠른 CPU자원을 효율적으로 활요하지 못함
- 시간차이, 주어진 자원의 특성을 고려하는 방식이 필요
- 짧은 간격으로 줬다 뺏었다 반복
Memory : 한정된 메모리를 어떻게 쪼개어 쓰지? > 메모리 관리
- 무조건 n분의 1로 나누기 보다, 특정 프로그램에게 몰아주는게 효율적일 수 있음
- 메모리는 한정적 : 쫒아내야 함
- CPU에서 금방 또 다시 사용할 것은 쫒아내지 않아야 함 : 미래를 예측해서 메모리에서 많이 사용된 데이터들은 메모리에서 쫒아내지 않음
디스크에 파일을 어떻게 보관하지? > 파일 관리
- 엘리베이터 스케줄링과 비슷 : 순서대로 처리하는게 아니고 중간에 해결할 수 있는 것은 해결하면서 처리
- CPU 스케줄링과 디스크 스케줄링은 차이가 있음 : 디스크는 헤더를 움직이면서 처리
각기 다른 입출력 장치와 정보를 어떻게 주고 받지? > 입출력 관리
- I/O 디바이스는 매우 느림
- 인터럽트 방식 : CPU는 매우 바빠서 항상 자기 할 일을 하고 있음. 입출력 장치가 중간에 인터럽트를 걸어서 CPU에게 알려줌
[참고]
'Computer Science > OS' 카테고리의 다른 글
[OS] 프로그램 실행 (0) | 2022.02.19 |
---|---|
[OS] 컴퓨터 시스템 구조 (0) | 2022.02.16 |
[OS] 운영체제의 분류 (0) | 2022.02.13 |
댓글