운영체제(operating system) : 하드에어 바로 윗단에 설치되는 소프트웨어
→ 하드웨어가 운영체제와 한 몸이 되어야만 사용자에게 쓰일 수 있는 시스템이 됨
운영체제 중 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용
1) 하드웨어를 위한 역할 : 하드웨어를 운영체제가 관리
= 컴퓨터 시스템 내의 자원(resource)을 효율적으로 관리
자원관리자(resource manager)라고도 불림
자원 = 하드웨어 자원 (CPU, 메모리, 하드디스크 등) + 소프트웨어 자원
2) 사용자를 위한 역할 : 인터페이스 제공
= 시스템을 편리하게 사용할 수 있는 환경 제공
3) 컴퓨터 시스템 내의 자원을 효율적으로 관리
4) 사용자와 운영체제 자신을 보호하는 역할
✔️동시 작업을 지원하는지의 여부
1) 단일작업(single tasking)
한 번에 하나의 프로그램만 실행시킬 수 있음 (주로 초창기 운영체제)
ex. 도스(Disk Operating System : DOS)
2) 다중작업(multi tasking)
ex. MS 윈도우, 유닉스
시분할 시스템(time sharing system) : CPU의 작업시간을 여러 프로그램들이 조금씩 나누어서 쓰는 시스템
다중 프로그래밍 시스템(multi-programming system) : 메모리 공간을 분할해 여러 프로그램들을 동시에 올려놓고 처리하는 시스템
대화형 시스템(interactive system) : 사용자 개개인의 관점에서는 각 프로그램에 대한 결과를 곧바로 화면에 나타내는 시스템
다중처리기 시스템(multi-processor system) : 하나의 컴퓨터 안에 CPU가 여러 개 설치된 경우
✔️다중 사용자에 대한 동시 지원 여부
1) 단일 사용자용 운영체제 : 한 번에 한 명의 사용자만이 사용하도록 허용하는 운영체제
2) 다중 사용자용 운영체제 : 여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제 ex. 서버
✔️작업을 처리하는 방식
1) 일괄처리(batch processing) 방식 : 요청된 작업을 일정량씩 모아서 한번에 처리하는 방식
처리해야할 여러 작업들을 일정량 모아 일괄적으로 처리하고, 모든 작업이 완전히 종료된 후에 결과 얻을 수 있음
⇒ 응답시간이 김
ex. 펀치 카드 처리 시스템
2) 시분할 방식 : 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식
⇒ 일괄처리 방식에 비해 짧은 응답시간 가짐
⇒ 대화형 시스템(사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템)
3) 실시간(real time) 운영체제 : 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템
ex. 원자로, 공장제어 시스템, 미사일 제어 시스템
운영체제의 핵심적인 기능 = 자원을 효율적으로 관리하는 것
자원 = 하드웨어 자원 + 소프트웨어 자원
1) 하드웨어 자원
CPU 스케쥴링 : 어떤 프로그램에 CPU를 줄 것인가?
메모리 관리 : 한정된 메모리를 어떻게 나누어 사용할 것인가?
파일 관리 : 디스크에 파일을 어떻게 보관할 것인가?
입출력 관리 : 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고받을 것인가?
✔️CPU관리 방법
CPU가 하나밖에 없는 컴퓨터 구조에서도 프로세스는 여러 개가 동시에 수행 될 수 있음
CPU 스케쥴링(CPU scheduling) : 어떤 프로세스에 CPU를 할당하여 작업을 처리할지
→ 가장 효율적으로 사용하면서도 특정 프로세스가 불이익을 당하지 않도록 하는 것
→ 선입선출(First Com First Served: FCFS), 라운드 로빈(Round Robin), 우선순위(proprity)
CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것을 먼저 처리
CPU를 필요로하는 프로세스가 여럿 있을 때 CPU를 먼저 얻은 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스들이 CPU를 사용하지 못함
CPU 자체의 효율성 : 나쁘지 않음 / 시스템 전체의 효율성 : 비효율적
CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한
긴 작업을 요하는 프로세스가 CPU를 할당받더라도 정해진 시간이 지나면 CPU를 내어놓고 CPU 대기열의 제일 뒤에 가서 줄을 서야 함
대기 중인 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저 할당
✔️메모리 관리 방법
메모리 : CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치
프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라와 있어야 함
주소(address)를 통해 관리됨
프로그램에 메모리가 필요할 때 할당하고, 더 이상 필요하지 않을 때 회수함
→ 고정분할(fixed partition) 방식, 가변분할(variable partition) 방식, 가상메모리(virtual memory) 방식 등
물리적 메모리를 몇 개의 분할로 미리 나누어 관리
나뉜 각각의 분할에는 하나의 프로그램 적재 가능 → 융통성 X
내부조각(internal fragment) : 해당 분할에 올라온 프로그램에 의해서도 사용되지 않고, 다른 프로그램에도 할당될 수 없음 = 비효율적으로 낭비되는 공간
매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식
분할의 크기 때문에 실행이 제한되지는 않지만 물리적 메모리의 크기보다 큰 프로그램의 실행은 불가능
분할의 크기와 개수가 동적
외부조각(external fragment) : 프로그램에 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역
현대 범용 컴퓨터 환경에서 가장 널리 사용되는 메모리 관리 기법
물리적 메모리보다 더 큰 프로그램이 실행되는 것 지원함
가상 메모리의 주솔르 물리적 메모리의 주소로 매핑하여 주소를 변환시킨 후 프로그램을 물리적 메모리에 올림
현재 사용되는 부분만 메모리에 올리고, 나머지는 보조기억장치에 저장해두었다가 필요할 때 적재함
스왑 영역(swap area) : 이 때 이용되는 보조기억장치의 영역
페이징(paging) 기법 : 동일한 단위로 메모리를 나누는 기법 / 가상메모리 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나누어 물리적 메모리와 스왑 영역에 일부분씩 저장됨
✔️주변장치 및 입출력 장치
인터럽트(interrupt)라는 메커니즘을 통해 관리 이루어짐
인터럽트 : CPU의 서비스가 필요한 경우 서비스를 요청하기 위해 발생시키는 신호
CPU는 평소에 스케쥴링에 따라 자기에게 주어진 작업을 수행하다가 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트에 의한 요청 서비스를 수행 함
요청하는 장치와 발생 상황에 따라 다양한 종류가 있음
→ 인터럽트 처리 루틴 : 인터럽트가 발생했을 때 해주어야 할 작업을 정의한 프로그램 코드
컨트롤러(controller) : 주변장치들은 각 장치마다 그 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 CPU
→ 해당 장치에 대한 업무를 처리하고 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 함