티스토리 뷰
안녕하세요 :)
운영체제를 주제로 한 두번째 포스팅입니다.
이번 포스팅에선 운영체제에 대하여 객체또는 함수, 운영체제의 역사 구조 등을 전반적으로 다루어 보겠습니다.
2.1) Operting system objectives and function
편의성, 효율성, Ability to evlove(새로운 서비스나 결함을 업데이트해줌)
유저/ 컴퓨터 사이의 인터페이스 이다.
해주는일 - program development
- program execute
- 입출력 장치 접근
- 파일 접근 컨트롤
운영체제는 소프트웨어 구조에서 제일 및단에 있는 소프트웨어 이다.
운영체제는 자원들의 매니지먼트를 담당한다.
운영체제는 막강하다- 운영체제는 우리의 프로그램을 죽일수 있지만 우리의 프로그램은 운영체제를 죽일수 없다. 운영체제가 프로세서 컨드롤을 내어주기 때문이다.
커널(kernel) - 운영체제의 핵심이 되는 프로그램이다.(가장 많이 사용되는)
- 항상 메인메모리에 올라와있다.
2.2) Evolution of operating system
옛날의 컴퓨터는 배치잡(Batch job) 이었다.
이는 하나의 프로그램을 실행하면 끝날때까지 다른작업을 할수 없는 순차적인 작업형식을 말한다.
monitor(모니터)라는 운영체제가 존재하여 프로그램을 컨트롤 하였다.
Hardware features)
memory protection - 메모리를 두덩어리로 나누어 유저 프로그램과 운영체제(모니터) 프로그램을 구분하는것
timer - 만약 무한루프를 돌렸다 가정한다면 다음 배치에 있는 잡을 수행할수없기 때문에 이를 끊고 다음 프로그램을 실행함
privileged instructions- 유저 프로그램을 컨트롤 할수 있는 인스트럭션, 모니터(운영체제)레벨의 명령
interrupts - 인터럽트
모니터는 "유저모드와 시스템모드" 두가지 모드가 존재 한다.
유저 프로그램은 유저모드에서 실행되고 시스템(모니터)프로그램은 시스템 모드해서 수행된다.
당연히 시스템 모드가 더 강력한 모드로 수행된다.
uniprograming (유니프로그래밍) - 메인메모리에 프로그램 하나만 올라가있는경우
multiprograming (멀티 프로그래밍) - 메인메모리에 여러 프로그램을 올려두어 프로그램의 대기시간에 다른 프로그램을 실행하는 방식으로 예를들어
(프린트에 출력을 100장을 걸어두고 100장이 다 나올때까지 기다렸다가 계산기 어플을 돌리는 방식이 아닌 출력명령을 100이 나오는동안 계산기 어플을 돌리는 방식)
메인메모리에 프로그램을 최대한올려 cpu의 효율(활용도)를 최대한 높이기 위한 목적
Time sharing
멀티 프로그래밍 환경을 배치(batch)모드가 이닌 interactive 모드에 적용한 기법이다.
-리눅스 서버를 만들면 여러명의 유저가 사용하게 된다, 다중사용자가 같이 사용할때 나혼자만 사용한다는 느낌을 받을때가 있다, 이때 사용한 기법이 타임쉐어링 기법이다, 이는 cpu사용의 시간영역을 잘게잘게 자른다. 그후 잘게 자른 타임 소켓을 각각의 유저에게 배당하는 방식으로 거의 동시에 같은 만큼의 cpu 점유 시간을 받는다고 느끼게 된다.
그렇다면 배치 멀티프로그래밍과 타임쉐어링의 차이점은 무엇일까?
배치방식의 멀티프로그래밍은 자원의 효율성을 극대화 한다는것에 있다. 하지만 이런 방식으로 멀티유저 환경을 꾸린다면 Cpu를 점유하고 있는 특정유저에게 cpu의 효율은 좋게 되겠지만 타 유저의 응답시간 측면에서 한참 늦어진다. 반대로 타임쉐어링의 경우 cpu의 활용도는 낮아지지만 응답시간 측면에서 모든 유저가 동등하게 권리를 제공받게 된다.
2.3) Major Achievement
-process, memory management, scheduling & resource management
process)
파일에 형태로 디스크안에 있던 프로그램이 메인메모리에 올라와서 cpu 할당을 받아 수행되고 있는 상태를 프로세스라고 한다.
프로그램 카운터의 값이 프로그램을 가리키고 있는것
구성요소)
code - 소스코드
data - 지역변수등
context - 운영체제가 프로세스을 관리하는 부가적인 요소들
하나의 프로세스가 수행되게 위해 위의 세가지의 요소로 구성된 이미지가 메인메모리에 올라온다
pc값을 보고 확인할수 있다.
base - limit = 프로세스간의 서로의 영역을 표시하기위해서 표시해둔 주소의 레인지
base - 시작주소, base - 프로세스의 주소 크기(범위)
memory management)
process isolation - 프로세스간의 벽을 쳐준다. 고립시킨다.
automatic allocation & management - 메인메모리에 할당, 기록,운영
support of modular programming - c의 라이브러리처럼 모듈화
protection and access control - 보호와 접근 컨트롤
long -term storage - 전원을 꺼도 남아있게 하드디스크에 관리
virture memory)
개발자가 물리적 또는 논리적으로 보이게 하는것을 다룸
실제로 사용하는 메모리를 가상으로 넓혀준다.(전부를 올리지않고 필요할때 더올리는방식)
프로그램이 조각조각 나누어서 메모리로 올라간다 - paging, 큰기능들만 미리 올려둔후 함수등 부가적인 기능이 필요해질경우 그때 메인메모리로 올린다. 물리적으로 메인메모리에 올라가는 단위는 frame이라한다. 디스크에서 쪼개는 행위를 paging이라한다.
scheduling and resource management)
프로그램을 서로 싸우지않고 공평하게 잘 영역을 할당해주는 것을 스케줄링이라고 한다.
fairness - 공평하게
differential responsiveness - 타임 크리티컬하게 응답시간또한 공평하게
Efficiency - 자원의 활용을 최대한 수행하며 cpu를 바쁘게
스케줄링 해준다.
key elements of operating system
service call handler - 운영체제의 소스코드(라이브러리 함수)
interrupt handler
short term queue - 균등한 cpu 사용을 위한 분배
'Major > Operating System' 카테고리의 다른 글
Operating System - Mutual Exclusion (0) | 2021.04.14 |
---|---|
Operating System - Treads (0) | 2021.04.14 |
Operating System - process description & control (0) | 2021.04.14 |
Operating System - computer system overview (0) | 2021.04.13 |
Operating System - intro (0) | 2021.04.13 |