의의
역할
- 시스템자원 관리자
- 사용자와 컴퓨터 간의 커뮤니케이션 지원
- 컴퓨터 하드웨어와 프로그램 제어
각 역할에 대해 하나씩 살펴보자.
시스템자원 관리자
- 시스템 자원은 컴퓨터 하드웨어이다.
- CPU, Memory : 얼마나 사용해야하는지 스스로 결정할 수 없음
- I/O Devices : 스스로 화면에 표시할 수 없음
- 저장매체 (SSD, HDD) : 저장될 주소와 공간을 스스로 결정할 수 없음
그러므로 이 모든 활동을 운영체제가 제어하게 된다.
대표적인 운영체제
- Windows OS, Mac OS, UNIX OS가 있다.
- UNIX OS : 가장 최신의 운영체제라고 볼 수 있고 대표적으로 LINUX OS가 UNIX 계열 운영체제이다.
컴퓨터 하드웨어와 프로그램을 제어
- 프로세스 관리
- 주기억장치 관리
- 파일 관리
- 디스크 관리
- 입출력 관리
- 네트워킹, 보호/보안
의 기능을 통해서 프로그램과 하드웨어를 제어하게 된다.
운영체제와 응용 프로그램 관리
응용 프로그램은 우리가 디바이스 내에서 사용하는 파워포인트, 엑셀과 같은 어플리케이션을 의미한다.
운영체제와 응용 프로그램의 관계
운영체제는
- 응용 프로그램을 관리
- 실행
- 권한 관리 (관리자 권한으로 실행하는 것과 같은 활동)
- 사용자 관리
- 비정상적인 프로그램 작동을 관리하게 됨 (예시 - 오류가 작동한 프로그램 자체만 종료하는 것과 같은 활동)
- 권한과 사용자 관리
- 비정상적인 응용 프로그램 활동을 관리
결과적으로
사용자가 사용하는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고 지원하는 소프트웨어
응용 프로그램, 운영체제, 컴퓨터 하드웨어(시스템 리소스) 관계
운영체제는 응용 프로그램이 요청하는
- 메모리를 허가하고 분배
- CPU 시간을 제공
- IO devices 사용을 허가/제어
사용자, 응용 프로그램, 운영체제, 컴퓨터 하드웨어와 관계
운영체제는 사용자 인터페이스 제공
- 쉘 (shell)
- 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램
- 터미널 환경 (CLI)와 GUI 환경 두 종류로 분류
운영체제는 응용 프로그램을 위해서도 인터페이스를 제공
- API (Application Programming Interface)
- 함수로 제공
- 라이브러리 형태로 제공
시스템 콜
- 운영체제가 각 기능을 사용할 수 있도록 시스템 콜이라는 명령, 함수를 제공
- API 내부는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분
- POSIX API, Windows API가 있다.
- 커널모드에서만 실행 가능한 기능들이 있다.
- 커널모드로 실행하려면 반드시 시스템콜을 거쳐야 한다.
- 시스템콜은 운영체제가 제공함
운영체제 구조
CPU Protection Rings
- 사용자 모드 : 응용 프로그램이 사용함
- 커널 모드 : OS가 사용함, 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드
- 함부로 응용 프로그램이 전체 컴퓨터 시스템을 제어할 수 없다.
정리
- 운영체제는 시스템콜을 제공
- 프로그래밍 언어별로 운영체제 기능 활용을 위한 시스템콜을 기반으로 한 API 제공
- 응용 프로그램은 운영체제 기능 필요시, 해당 API를 사용해서 프로그램 작성
- 시스템콜이 호출되면 커널모드에서 해당 명령이 실행되고 다시 응용 프로그램으로 돌아오는 구조임
프로세스 스케쥴링
배치 처리 시스템
- 여러 프로그램을 순차적으로 실행하면 아래와 같은 단점
- 시간이 오래 걸리는 프로그램이 있을 경우, 해당 프로그램 이후의 프로그램 실행에 시간이 많이 소요
- 성격이 다른 프로그램을 동시에 실행 불가능
- 여러 사용자가 동시에 하나의 컴퓨터 자원을 나눠 사용하지 못함 (다중 사용자 지원)
이러한 문제때문에 멀티 프로그래밍/ 시분할 시스템이 발생
시분할 시스템
- 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템
멀티 프로그래밍
- 단일 CPU에서 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템
멀티 태스킹과 멀티 프로세싱 차이
- 멀티 태스킹 : 단일 CPU에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템
- 멀티 프로세싱 : 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행속도를 극대화하는 시스템
멀티 프로그래밍 목적
- 최대한 CPU 활용성을 높이는 것이 목적
- 응용 프로그램을 짧은 시간 안에 실행 완료할 수 있음
- 응용 프로그램은 실행 중간에 파일을 읽거나 프린트를 하거나 하는 다른 작업과 연계된 경우가 대부분이므로 멀티 프로그래밍 방식을 이용해 자원을 최대한 활용