1. 운영체제의 정의
- 운영체제(operating system)란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 말함
- system 이라고 불리는 이유는 하드웨어가 운영체제와 한몸이 되어야만 사용자에게 쓰일 수 있는 진정한 컴퓨터 시스템이 되기 때문
- 운영체제 자체도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라감
- 단 전체가 올라가지 않고 운영체제 중 항상 필요한 부분만 전원이 켜짐과 동시에 올라감
커널
2. 운영체제의 기능
⭐️ 두가지 주요기능 ⭐️
- 시스템 내의 자원(resource)을 효율적으로 관리하는 것
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
- 사용자 및 프로그램들에게 각각 독자적으로 컴퓨터를 사용하는 것과 같은 ‘환상’을 제공
- 복잡한 부분은 운영체제가 대행, 사용자, 프로그램은 그에 대한 자세한 내용을 알지 못해도 프로그램을 실행할 수 있도록 해줌
- 보안및 보호 기능 수행
3. 운영체제의 분류
- tasking에 따른 분류
- 단일작업 (single tasking)
- 한 번에 하나의 프로그램만 실행시킬 수 있음
- Disk Operating System:DOS
- 다중작업 (multi tasking)
- 동시에 2개 이상의 프로그램을 처리할 수 있는 운영체제
💡 여러 프로그램이 CPU와 메모리를 공유함
비록 CPU가 하나밖에 없어 매 순간 하나의 프로그램만 CPU에서 실행될 수 있더라도 CPU의 처리 속도가 워낙 발라 수 밀리초(ms) 이내의 짧은 여러 규모로 여러 프로그램들이 CPU에서 번갈아 실행되면 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것 처럼 보이기 때문
1. 시분할 시스템(time sharing system)
2. 다중프로그래밍 시스템(multi-programming system)
1. 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템
3. 대화형 시스템(interactive system)
1. 보드 입력의 결과를 곧바로 화면에 보여줌
4. 다중처리기 시스템(multi-processor system) 🔥
1. 하나의 컴퓨터 안에 cpu가 여러 개 설치된 경우를 뜻함
2. 다중 사용자용 운영체제
1. 이메일 서버, 웹서버 등 흔히 서버라고 부르는 컴퓨터
- 작업을 처리하는 방식
- 일괄 처리 방식(batch processing)
- 요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식
- 응답시간이 길다는 단점
- punch card 처리 시스템
- 시분할 방식
- 컴퓨터의 처리능력을 일정한 시간 다누이로 분할해 사용하는 방식
- 짧은 응답시간
- 자기 혼자 독점적으로 사용하는 것처럼 생각할 수있음
- 사용자의 요청에 대한 겨로가를 곧바로 얻을 수 있는 시스템- 대화형 시스템(대표적인 특징)
- 실시간 운영체제 (Real Time)
- 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 한느 시스템
- 일정 시간 안에 작업이 완료되지 못할 경우에는 동작 자체가 되지 않거나 큰 위험을 초래할 가능성이 있는 시스템에 사용
- 원자로, 공장 제어 시스템, 미사일 제어 시스템
- 시간 제약 중요성으로 나뉨
- 경성 실시간 시스템 (hard realtime system)
- 로켓, 원자로, 제어 시스템
- 연성 실시간 시스템 (soft realtime system)
- 스트리밍 시스템
- 데이터가 정해진 시간 단위로 전될어야 올바른 기능을 수행할 수있는 시스템
4. 운영체제의 예
- MS 윈도우
- 다른 운영체제에 이미 익숙한 사용자를 비롯해 컴퓨터를 처음 다루는 초보자에게도 쉽게 배울 수 있는 방법 제공
- 시스템에 새로운 하드웨어를 장착하면 운영체제가 자동으로 하드웨어르 감지하여 그에 맞게 설정된다는 점 (플러그 앤 플레이 : plug and play)
- 네트워크 프로그램 지원
- 안정성이 유닉스 같이 오랜 전통을 가지는 운영체제에 비해 떨어짐
- 위를 보완한 것 이 윈도우 NT
- 유닉스
- 개발 환경을 위해 설계된 운영체제로서 이식성(portability)이 좋음
- 이식성 : 해당 소프트웨어를 다른 기종의 기계로 옮기는 것이 얼마나 용이한가
- 커널의 크기가 작음
- 소스코드가 공개되었음
- 어셈블리 대신 대부분 C 언어로 작성 되었음
- 리눅스의 등장으로 대형 서버뿐 아니라 개인용 컴퓨터 에서도 유닉스를 널리 사용할 수 있음
- 대형 컴퓨터 및 전문적인 목적의 컴퓨터에 사용되기에 적합
5. 운영체제의 자원 관리 기능
운영체제의 가장 핵심적인 기능은 자원을 효율적으로 관리!
-
CPU 관리 방법
- CPU 스케줄링: 매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 일
- CPU를 가장
효율적
으로 사용하면서 형평성
을 유지
- 선입선출 (First Come First Served: FCFS)
- 도착한 프로세스들 중 먼저 온 것을 먼저 처리해주는 방식
- 먼저 얻은 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스 들이 CPU를 사용하지 못한다.
- CPU 자체의 효율적 ok, 전체 시스템 입장에서 효율적 x
- 긴 시간 걸리는 작업 먼저, 짧은 시간 걸리는 작업들 나중에
- 장시간 기달려야 함...
- 라운드 로빈(Round Robin)
- 선입선출 기법의 단점을 보완하고자 고안된 기법
- cpu를 한 번 할당받아 사용할 수 있는 시간을 고정된 시간으로 제한
- 정해진 시간이 지나면 cpu를 내어놓고 cpu대기열의 제일 뒤에가서 줄을 서야 함
- 일반적으로 1회 할당시간은 밀리초 단위를 사용함(다수의 사용자가 동시에 접속할 때에도 1초 이하의 응답시간을 보장받을 수 있게 됨)
- 우선순위(priority) 기법 등이 있음
- cpu사용을 위해 대기중인 프로세스들에 우선순위를 부여 우선순위가 높은 프로세스에 cpu를 먼저 할당함
- 상댖거으로 더 중요한 프로세스가 있을 수 있음 그런 프로세스의 우선순위를 높게 하여 cpu를 먼저 획득할 수 있도록 함
- 기다린 시간이 늘어날수록 우선순위를 점차 높여주는 방안도 있음
-
메모리 관리 방법
- 메모리란 cpu가 직접 접근할 수 잇는 컴퓨터 내부의 기억장치임
- cpu에서 실행되려면 해당 부분이 메모리에 올라가 있어야 함
- 메모리의 어느부분이 어떤 프로글매에 의해 사용되고 있는지는 주소(address)를 통해 관리됨
- 고정분할 방식 (fixed partition)
- 해당 메모리안에 남는 영역 (내부 조각) 발생
- 가변분할 방식 (variable partition)
- 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식
- 내부조각 발생 x
- 외부조각 발생 (프로그램에 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역을 말함)
- 가상 메모리 (virtual meemory)
- 물리적 메모리보다 더 큰 프로그램이 실행 되는것을 지원함
- 가상메모리의 크기에 의해 결정
- 모든 물리적 메모리와는 독립적으로 0번지부터 시작하는 자신만의 가상메모리 주소를 가짐
- 가상 메모리의 주소를 물리적 메모리 주소로 매핑하는 기술을 이용해 주소를 변환
- 가상메모리 기법에서는 물리적 메모리의 크기와 상관 없이 사용할 수 있는 메모리의 크기가 충분히 큼
- 가능하게 원리는 전체 크기가 클지라도 전체가 항상 동시에 사용되는 것은 아님
- 현재 사용되고 있는 부분만 메모리에 올리고 나머지는 하드디스크와 같은 보조기억장치에 저장함
- 스왑 영역(Swap area) : 보조기억 장치에 저장되는 영역
- 페이지(page) 가상 메모리 주소 공간: 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑영역에 일부분 저장됨
-
주변 장치 및 입출력 방식
- 인터럽트(interrupt)라는 메커니즘을 통해 관리가 이루어짐
- 주변장치들은 CPU의 서비스가 필요한경우 신호를 발생시켜 서비스 요청을함
- 이때 발생시키는 신호를 인터럽트라고 함
- 인터럽트가 발생했을 때도 직전의 작업 상태를 잠시 저장해두고 인터럽트를 먼저 처리하게 됨
- 서로 다른 인터럽트 처리루틴을 가지고 있음
- 인터럽트 처리루틴: 인터럽트가 발생했을 때 해주어야 할 작업을 정의한 프로그램 코드를 말함
- 인터럽트 발생 → 인터럽트 처리 루틴 찾음 → 정의된 코드에 따라 일을 수행
- 컨트롤러(controller) : 장치에서 일어나는 업무를 관리하기 위한 일종의 작은 cpu
-
컨트롤러 해당 장치에 대한 업무를 처리,
-
해당 장치 업무 후 → 메인 cpu에 인터럽트 발생시켜 보고하는 역할을 함
-
키보드 입력 → 컨트롤러 인터럽트 발생 → cpu에게 인터럽트 사실 전달
→ cpu 현재 수행 중이던 작업 상태 저장
→ 보드 인터럽트 처리루틴 찾음
→ 처리루틴은 키보드로부터 입력받은 내용을 메모리의 특정 부분에 저장
→ 해당 프로그램에 키보드 입력이 들어왔음을 알림
→ 인터럽트 처리 완료
→ 인터럽트 발생하기 직전 상태 복구및 중단되었던 작업 재개
Reference
반효경, 운영체제와정보기술의원리, 이화여자대학교출판문화원, 2020.05.04, p45~65