운영체제의 정의
하드웨어 윗단에 설치되는 소프트웨어
커널 - 메모리에 상주하는 운영체제의 부분 (좁은 의미의 운영체제)
- 운영체제 코드 중 가장 핵심적인 부분을 뜻함
운영체제의 기능
1. 시스템내의 자원을 효율적인 관리
2. 시스템을 편리하게 사용할 수 있는 환경을 제공
3. 시스템의 보안 및 보호 기능 수행
운영체제의 분류
- 단일 작업용 운영체제 : 한 번에 하나의 프로그램만 수행시킬 수 있는 운영체제 (운영체제의 초기모델)
- 다중 작업용 운영체제 : 두개 이상의 프로그램을 수행시킬 수 있는 운영체제
다중 작업용 운영체제라고 할지라도 CPU는 매 순간 하나의 프로그램만이 수행된다. 처리 속도가 워낙 빨라 사용자 입장에서는
여러 프로그램이 동시에 수행되는 것처럼 보인다. (시분할 시스템 - 여러 프로그램 들이 조금씩 나누어 쓰는 시스템)
메모리의 다중 프로그래밍 시스템
: 여러 프로그램들이 조금씩 메모리 공간을 분할해서 사용하는 시스템
대화형 시스템
: 여러 프로그램이 실행 중임에도 불구하고 입력의 결과가 곧바로 출력의 결과가 나타나는 시스템(혼자 사용하는 것처럼 느낌)
다중 처리기 시스템
: 하나의 컴퓨터에 여러 개의 CPU가 탑재되어있는 시스템 - 속도는 빨라지지만 단일 보다 더욱 복잡한 메커니즘을 필요로 함
동시 지원
- 단일 사용자용 운영체제 : 한 번에 한 명의 사용자만이 사용
- 다중 사용자용 운영체제 : 여러 사용자가 동시에 접속해서 사용 ex) 서버
처리방식
- 일괄 처리 방식 : 작업 요청의 일정량을 모아서 한꺼번에 처리하는 방식
- 시분할 처리 방식 : 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해서 처리하는 방식 ex) UNIX
- 실시간 처리 방식 : 정해진 시간에 반드시 종료됨이 보장되는 시분할 방식 - 어길 경우 위험이 따름
운영체제의 자원 관리 기능
운영체제의 기능 네 가지
1. CPU 스케쥴링 : 어떤 프로그램에게 CPU를 할당할 것인가
2. 메모리 관리 : 한정된 메모리를 어떻게 관리할 것인가
3. 파일 관리 : 디스크에 파일을 어떻게 보관할 것인가
4. 입출력 관리 : 입출력 장치와의 의사소통을 어떻게 할 것인가
1. CPU 스케쥴링
선입선출 : 먼저 도착한 프로세스를 먼저 처리
라운드 로빈 :CPU를 한 번 할당받아 사용할 수 있는 시간을 제한 만약 시간이 지나면 다음 프로세스 처리
우선순위 : 상대적으로 더 중요한 프로세스에 높은 우선순위를 매겨 우선 처리
2. 메모리 관리
운영체제는 메모리의 어느 영역이 어떻게 관리되는지를 파악하기 위해서 각 메모리에 주소를 할당한다.
운영체제는 불필요한 자원을 소비하지 않도록 메모리를 효율적으로 관리해야 한다.
물리적 메모리 관리 방식
고정 분할 방식 : 물리적 메모리를 몇 개의 분할로 나눈다. 나뉜 각각의 분할에는 하나의 프로그램이 적재된다.
융통성이 없음
- 최대 프로그램 개수 = 분할 개수
- 분할 크기보다 더 큰 프로그램은 적재 불가
- 분할 크기보다 작은 프로그램이 적재된 경우 자원이 낭비 발생 (내부 조각 발생)
가변 분할 방식 : 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식
- 분할 크기보다 더 큰 프로그램은 적재 불가 -> 이점은 해결
- 내부 조각은 발생하지 않지만 외부 조각이 발생
- 외부 조각 예시 :
A에 100 영역 할당
B 50 할당 A 작업 완료
A영역에 C 할당 (이때 C의 크기는 80) -> 20의 빈 공간 생김
40 크기의 D 할당 -> 빈 공간인 20에 할당하려 하였으나 D의 크기가 이보다 큼
결국 D는 사용하지 못함
이때 사용하지 못하는 20만큼의 빈 공간을 외부 조각이라고 한다.
가상 메모리 관리방식 : 물리적 메모리보다 더 큰 프로그램이 실행되는 것을 지원
가상 메모리 관리 방식 - 거의 모은 컴퓨터 시스템에서 사용
: 실행될 수 있는 프로그램의 크기는 가상 메모리 크기에 의해 결정
- 현재 사용되는 부분만 메모리에 올리고 사용되지 않는 부분은 하드디스크와 같은 보조 기억장치에 저장해 두었다가
필요할 때 메모리에 적재한다.
보조 기억 장치의 영역 : 스왑 영역
스왑 영역에는 프로그램을 구성하는 주소 공간을 페이지라는 동일한 크기의 작은 단위로 저장
입출력 관리
주변 장치들은 CPU애 서비스가 필요할 경우 인터럽트라는 신호를 발생시켜 서비스를 요청
- CPU는 스케쥴링에 따라 주어진 작업을 수행하다 인터럽트가 발생하면 하던 일을 멈추고 해당 서비스를 수행
인터럽트 처리 루틴 : 인터럽트가 발생하였을 때 처리해야 할 작업을 정의한 프로그램 코드 (커널 코드 중 일부분)
컨트롤러 : 주변 장치들이 가지고 있는 일종의 작은 CPU
- 컨트롤러는 처리를 완료하고 메인 CPU에 인터럽트를 발생시켜 보고한다.
참고 서적
|
'CS > O.S' 카테고리의 다른 글
(운영체제) 프로세스간 커뮤니케이션 (0) | 2020.03.17 |
---|---|
(운영체제) 프로세스와 컨텍스트 스위칭 (0) | 2020.03.17 |
(운영체제) 프로세스 구조와 힙 (0) | 2020.03.07 |
(운영체제) 운영체제 공부 시작 (0) | 2020.01.15 |
(LINUX) 리눅스 명령어 정리 (0) | 2019.11.22 |