[OS] 운영체제란?
벌써 5월이네요
3-1학기의 기억이 흐릿해진 시점에서 운영체제를 복습하고자 합니다.
운영체제가 참 중요하다는 것을 여러번 느꼈기 때문....
그래서...
운영체제란?
- 하드웨어 바로 위에 설치되는 소프트웨어
- 컴퓨터 시스템의 자원을 효율적으로 관리
목적
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
: 실제로는 한 대의 컴퓨터를 여려명이 쓰는 거지만, 한 사용자가 각자 한 대의 컴퓨터를 쓰는 것 처럼 느껴지도록
- 컴퓨터 시스템의 자원을 효율적으로 관리
: 효율성 + 형평성 (사용자가 모두 형평성있게 자원을 쓸 수 있도록)
분류
1. 동시 작업 가능 여부
- 단일 작업 : 한 번에 하나의 작업 (옛날)
- 다중 작업 : 한 번에 여러 작업 (요새)
2. 사용자 수
- 단일 사용자 : 단일 작업은 거의 단일 사용
- 다중 사용자 : 동시에 접속 가능
3. 처리 방식
- 일괄 처리 : 작업들을 모아서 한 번에 처리 (OMR같은 작업 카드 사용)
- 시분할 : 시간 단위로 작업을 분할하여 사용, 짧은 응답 시간
- 실시간 : 데드 라인 존재, 정해진 시간 안에 반드시 종료됨이 보장 (미사일, 반도체 등에서 사용)
용어
- Multi-tasking : (사실 CPU는 매 순간 하나의 작업을 처리하지만 시분할 등을 사용해서) 작업이 여러개 동시에 수행되는 것 처럼 처리, 하나의 작업이 끝나기 전에 다른 작업 수행 가능
- Multi-programming : "메모리"에 여러 프로그램이 동시에 올라감
- Time Sharing : "CPU"의 시간을 분할하여 처리
- Multi-process : 여러 프로그램이 동시에 실행
ㄴ 이 네 가지 용어들은 비슷하게 사용 됨
- Multi-processor : processor는 CPU를 의미, CPU가 여러개 달린 컴퓨터를 의미
예시
- 유닉스 : 대형 컴퓨터용, 어셈블리 및 기계어로 OS를 만들기 힘들어서 C언어(고급언어)를 만들어냄.., 소스 코드 공개함, 높은 이식성을 가짐, 핵심만 커널에 유틸리티 기능은 커널 밖에 구현, Linux 등 버전이 다양함
- 윈도우 : 개인 컴퓨터용, DOS (메모리가 640KB로 아주 작음), MS Window 등 존재
자원 관리
- CPU 스케줄링 : CPU를 어떤 프로그램에게 할당할지
- 메모리 관리 : 디스크에서 읽어오면 시간이 오래걸려서, 메모리에 실행될 프로그램을 미리 올려놔야하는데 메모리 공간은 한정되어 있다. 어떤 프로그램을 메모리에 올려야할지, 어떤 프로그램을 메모리에서 쫓아내야할지
- 파일 관리 : 파일을 쪼개서 저장할지, 연속적으로 저장할지, 디스크 헤드의 이동을 어떻게 줄일지 등 (디스크 스케줄링은 엘레베이터 동작과 비슷함)
- 입출력 관리 : I/O 디바이스는 훨씬 느린데, 어떻게 정보를 주고 받을지 (인터럽트 기반, 인터럽트 걸어서 CPU에게 알려줌)