2-overview
2.1 운체란
소프트웨어가 컴퓨터 시스템에서 수행되기 위해 메모리에 프로그램이 올라가야함
운체도 메모리에 올라감
근데 운체가 메모리에 모두 올라가면 한정된 메모리 공간의 낭비가 심함
따라서 운체 중 항상 필요한 부분만 메모리에 올리고 필요하지 않은 부분 필요할 때마다 메모리에 올림
메모리에 상주하는 운체의 부분을 커널 이라고 한다.
커널
좁은 의미의 운체
넓은 의미의 운체
커널 뿐 아니라 각종 시스템을 위한 유틸리티 (광범위한 개념)
2.2 운체 기능
운체는 hw 와 사용자 사이에 존재
그래서 2 가지 역할로 나뉨
하드웨어에 대한 역할: 사용자가 알기 힘든 각종 hw 를 운체가 관리
사용자에 대한 역할: 사용자에게 편리한 인터페이스 제공
자세히 설명하면
컴퓨터 시스템 내의 자원을 효율적으로 관리
편리하게 사용할 수 있는 환경 제공
자원관리자의 운체
이 때, 자원은 CPU, 메모리, 하드 디스크 등 하드웨어~소프트웨워 자원까지 통칭함
전체적인 성능 향상 시키려다 보면 일부프로그램 또는 사용자가 불이익 당할 수 있음
그래서 형평성 있게 자원을 분배해야 함
자원관리자의 운체의 목표
효율성이 가장 큰 목표지만, 일부가 지나치게 희생되지 않게 형평성 있게 운영
이밖에도, 운체 자신을 보호하는 역할 악의성 프로그램을 작성하여 다른 프로그램이 올라간 or 운체의 메모리 영역을 참조하는 일이 없도록 보호 하는 역할
2.3 운체 분류
동시작업 지원 여부
동시 지원 여부
처리하는 방식
일괄 처리
시분할 방식
동시 작업 지원 여부: 단일 / 다중 작업
동시작업 지원 여부에 따라
단일 작업 운체
다중 작업 운체
단일
DOS 환경에서는 명령어 입력 라인이 뜨지 않아 한 번에 한 개 작업 수행
다중
다중 작업 지원
다중작업을 정확히 이해하자
운체가 다중 작업 처리시 여러 프로그램이 CPU 와 메모리를 공유
근데 일반적으로 컴터에는 CPU 가 하나뿐임
다중 작업 운체라 하더라도 CPU 에서는 매 순간 1 개의 프로그램만 수행
CPU 처리속도가 워낙 빨라 ms 이내의 짧은 시간 규모로 여러 프로그램이 CPU 에서 번갈아 수행됨
그래서 사용자 입장에서 동시에 수행되는걸로 보임
이와 같이 여러 프로그램들이 CPU 작업 시간을 죄금씩 나누어 쓰는 걸 시분할 시스템 이라함
메모리의 경우, 여러 프로그램들이 조금씩 메모리 공간을 보유하며 동시에 메모리에 올라갈 수 있음
이것은 다중 프로그래밍 시스템
다중 작업용 운체의 경우 키보드 입력 결과를 곧바로 화면에 보여주기 때문에 대화형 시스템 이라고 함
이에 비해 multi-processor system 은 하나의 컴터 안에 CPU 가 여러개 설치된 경우라 위의 용어와는 다른 의미
CPU 가 여러개 있으면 서로 다른 CPU 에서 여러 프로그램을 동시에 수행할 수 있어서 처리가 빠름
but 운체 입장에서 여러 CPU 를 관리하기 위해 더욱 복잡한 메커니즘 필요
(위 책에서는 특별한 언급이 없음녀 CPU 1 개 탑재된 컴터만 다룸)
2. 동시 지원 여부
분류하는 또다른 기준은 동시 지원 여부
단일 사용자용 운체: 한 번에 한 명의 사용자만이 사용하도록 허용
다중 사용자용 운체: 여러 사용자가 동시에 접속해서 사용
이메일 서버, 웹 서버 등 우리가 흔히 서버라고 부르는 컴터
3. 처리 방식
일괄 처리 방식 (batch)
작업 요청의 일정량을 모아 한꺼번에 처리
사용자 입장에서는 응답 시간이 길다는 단점
시분할 방식
여러 작업을 수행할 때 처리 능력을 일정 시간 단위로 분할하여 사용
예컨대 유닉스는 시분할 방식 사용
유닉스 서버 컴퓨터는 사용자들의 작업을 짧은 시간 단위씩 번갈아 가며 처리
그러므로 사용자는 batch 방식에 비해 짧은 응답시간을 갖게됨
real time
정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 시스템에서 사용
2.5 운체 자원 관리 기능
CPU 관리하기
일반적인 컴터에는 CPU 가 하나임
근데, 프로세스는 여러개가 동시에 실행됨
그러므로, 매 시점 어떤 프로세스에게 CPU 를 할당해 작업할건지 결정해야함
이러한 것을 CPU 스케줄링 이라고함
CPU 스케줄링의 목표
CPU 를 가장 효율적으로 사용
특정 프로세스가 불이익 당하지 않게 하는 것
스케줄링 기법
FCFS(First Come First Served)
Round Robin
우선수위 기법
1. 선입선출 기법
CPU 를 사용하기 위해 도착한 프로세스 먼저 처리
줄서기와 유사
먼저 CPU 요청한 프로세스가 작업 완료할 때까지 다른 프로세스들이 CPU 사용 못함
장점: 효율성 좋음
단점: 전체 시스템 입장에서 비효율적인 결과 초래
장시간 CPU 사용하는 프로세스 먼저 도착, 단시간 CPU 사용하는 프로세스 뒤늦게 도착하면.. 개오래기다려야함
이걸 보완하기 위해 Round Robin
2. Round Robin
CPU 를 할당받아 사용할 수 있는 시간을 일정한 고정된 시간으로 제한
긴 작업을 요하는 프로세스가 CPU 할당 받아도 정해진 시간 지나면 CPU 내놓고 제일 뒤에 가서 기다려야함
그래서 1 번 단점 해결
구체적으로 1 회 사용 할 수 있는 할당 시간을 얼마로 할까?
ms 정도 단위 사용한다. 그러면 100 명의 사용자가 동시에접속하여 1 초 이하의 응답시간을 보장 받음
3. 우선순위
수행 대기중인 프로세스 들에게 우선순위 부여. 우선순위 높은 프로세스에게 CPU 먼저 할당
시스템 내의 프로세스 중에 중요한 프로세스에게 높은 우선순위
오래 기다리는 프로세스 발생하지 않도록, 기다린 시간 늘어날수록 우선순위 높임
운영체제의 또다른 관리 대상은 메모리
CPU 가 직접 접근할 수 있는 컴터 내부 기억 장치
프로그램이 CPU 에서 수행되려면 해당 부분이 메모리에 적재되어야 함
한정된 메모리 공간 효율적인 관리를 위해 메모리의 어느 부분이 어떤 프로그램에 의해 사용되는지 유지하기 위해
address
를 이용
물리적 메모리 관리하는 방법
고정 분할
가변 분할
가상 메모리
고정 분할
몇 개의 영구적인 분할로 나눔
단점
융통성 없음
분할된 크기보다 작은 프로그램 적재되는 경우 내부조각 발생
분할된 크기보다 큰 프로그램은 적재 안됨
가변 분할
매 시점 프로그램의 크기에 맞게 메모리 분할
분할된 크기 때문에 큰 프로그램 실행 제한되는 문제 발생 안됨
그러나, 물리적 메모리크기보다 더 큰 프로그램의 실행은 여전히 불가능
내부조각은 발생하지 않으나, 외부조각 발생
외부조각이란 프로그램에게 할당되지 않은 메모리 영역이지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역
가상 메모리
물리적 메모리 보다 더 큰 프로그램이 실행되는 것을 지원. 거의 모든 컴터에서 사용되는 기법
이 때 실행될 수 있는 프로그램의 크기는 가상 메모리 크기에 의해 결정
자세히 말하면, 모든 프로그램은 물리적 메모리와는 독립적으로 주소가 0 부터 시작하는 자신만의 가상 메모리를 가짐
OS 는 가상 메모리의 주소를 물리적 메모리 주소로 매핑하는 기술을 이용하여 주소를 변환시킨 후 프로그램을 물리적 메모리에 올림
물리적 메모리 크기가 4M 이라 하더라도 20M 의 프로그램을 실행할 수 있음
Paging 기법
동일한 단위로 메모리를 나누는 Paging
프로그램의 진짜 크기가 20M 이더라도 전체가 항상 동시에 사용되지 않음
현재 사용되고 있는 부분만 메모리에 올리고,
나머지는 하드디스크와 같은 보조기억장치에 저장해두고 필요할 때 적재
이 때 사용되는 보조기억 장치의 영역을 우리는 Swap area 라고 부름
프로그램을 구성하는 주소 공간은 PAGE 라는 동일한 크기의 작은 단위로 나뉘어서
물리적 메모리와
스왑 영역에 일부분씩 저장함.
interrupt 메커니즘 주변 장치 및 IO 장치는 CPU 나 메모리와 달리 인터럽트 메커니즘을 통해 관리됨 CPU 의 서비스가 필요한 경부 인터럽트라는 신호 발생시킴 CPU 는 스케줄링에 따라 작업 수행하다가 인터럽트 발생시 하던 일 멈추고 요청 서비스 수행 인터럽트는 대개 키보드 입력시 일어난다. 한편, 주변 장치들은 그 장치에서 일어나는 업무에 대한 관리를 위해 작은 CPU 를 가짐 컨트롤러라고 부름. 해당 장치에 대한 업무 및 메인 CPU 에 인터럽트 발생시키는 일을 함 키보드 이넡럽트 처리루틴을 운체가 찾는데, 이것은 키보드로 예를 들면 입력받은 내용을 메모리의 특정 부분에 저장하여 키보드 입력이 들어왔음을 알리면서 처리루틴 완료.
Last updated
Was this helpful?