-
[시스템프로그래밍] 10강 운영체제 개요, CPU 관리, 주기억장치 관리, 주변장치 관리, 파일관리프로그래밍/시스템프로그래밍 2014. 4. 27. 05:08반응형
* 운영체제 개요
운영체제는 사용자가 시스템을 좀더 효율적으로 사용할 수 있도록 해주는 aroowk 역할을 하는 프로그램
대표적으로 DOS, Windows
운영체제의 기능
입출력장치관리, 시스템 자원 관리, 에러 검출 및 조치로 구분
입출력장치 관리 : GUI와 같은 환경등을 제공해주며 사용자가 눈으로 볼 수 있도록 출력해주는 역할을 대부분 처리한다.
시스템 자원 관리 : 메모리, 프로세스, 장치, 파일등의 시스템 구성요소들을 시스템 자원이라 하는데 이러한 자원을 관리하는 역할을 수행
에러 검출과 조치 : 프로그램에서 에러가 발생할 경우 이에 대한 조치를 한다.
2. 운영체제의 종류
단순 일괄처리 시스템(simple batch system) : 초창기 컴퓨터 시스템은 속도가 느리고 온라인 판독기 및 프린터에만 의존하여 작업을 수행하는 시스템이어서 많은 처리시간이 소요되었다
스폴링은 디스크를 매우 큰 버퍼처럼 사용하여 가능한 미리 입력장치로부터 판독하고 출력장치가 그것을 받을 수 있을 때 까지 출력파일을 저장하여 처리
버퍼링은 느린 속도를 보완하여 유휴시간이 없도록 프로세서의 연산과정과 함께 어떤 작업의 입출력을 동시에 수행하는 운영체제의 기능 중 하나
다중 일괄처리 시스템(multi program batch system) : 다중 프로그래밍은 중앙처리장치가 항상 작업을 수행할 수 있도록 작업을 구성함으로써 중아처리장치의 이용률을 증진시키는 기법
사용자 프로그램 영역에 하나의 작업이 아닌 여러개의 작업중에서 운영체제는 하나를 선택해 실행하게 된다
.작업중인 하나의 작업이 키보드 명령얼 기다리거나 입출력의 종료를 기다리는 등의 어떤 작업을 기다리게 되면 유휴시간이 생기는데 이러한 유휴시간을 두지않고 다른 작업을 먼저 할 수 있도록 운영체제가 다음 작업을 실행
디스크에 있는 작업들 중에서 기억장치에 옮겨지는 작업을 선택하도록 하는 것을 작업 스케줄링이라고 한다.
시분한 시스템(time sharing system) : 다중 프로그램 일괄처리 시스템은 여러 가지 시스템 자원을 효율적으로 이용할 수 있는 환경을 제공
작업 실행 동안 사용자는 작업과 대화를 할 수 없기 때문에 발생 가능한 모든 결과를 처리하기 위해 제어 가드를 설정해야한다
시분할 시스템은 사용자와 컴퓨터 간의 대화식을 사용하려는 시도에서 개발된 것
시분할 운영체제는 중앙처리장치 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 시스템 자원을 시간적으로 분할하여 사용할 수 있도록 제공
실행중인 프로세스 간 통신 및 입출력장치의 상요에 대한 제어 및 관리능력이 필요하고 적절한 응답시간을 얻기 위하여 작업을 주기억장치에서 디스크로 적절하게 swap-in, swap-out 시키는데 이것을 스와핑이라 한다.
분산처리 시스템 : 시스템마다 운영체제와 메모리를 가지고 독립적으로 운영되며 필요할 때 통신하는 시스템이다
최근에는 자원공유, 연산속도 향상, 신뢰성과 통신등의 문제로 여러 개를 물리적 프로세서에 연산을 분산하는 경향이 있다.
다중처리 시스템(symmetric multiprocessing system) : 다중처리 시스템이란 여러 개의 마이크로프로세서를 여러 개 연결해 하나의 작업을 처리할 수 있도록 구축한 시스템
병렬처리 시스템(parallel system) : 병렬처리 시스템은 입출력 채널 또는 처리기와 같은 장치에서 둘 이상의 프로세서를 동시에 수행하는 방식의 시스템
실시간 시스템 : 계산이나 정보 처리의 결과가 즉시 필요한 곳으로 허용된 시간 내에 출력되는 처리 방식으로 실시간 처리 방식이라고도 한다.
3. 운영체제의 발전 과정
운영체제의 역사
4. 운영체제의 구성
운영체제는 여러 개의 시스템으로 구성되어 있다.
시스템 구성요소를 자원이라고 하는데 운영체제의 첫 번 째 역할을 자원을 관리하는 것
운영체제의 자원 관리로는 메모리 관리, 프로세스 관리, 장치관리, 파일 관리로 구분
* CPU 관리
CPU 관리의 개요
프로세스는 실행 중인 프로그램으로 프로세스 하나의 작업을 처리하기 위하여 중앙처리장치 시간, 메모리, 파일, 입출력 장치와 같은 다양한 자원이 필요
자원은 프로세스가 생성될 때 또는 실행 중에 할당될 수도 있다.
프로세스 개념 : 생성-실행-대기-준비-종료
프로세스 스케줄링(process scheduling) : 중앙처리장치를 다른 프로세스로 넘겨주기 위해서는 지금까지 수행중인 프로세스의 상태를 보고나하고 새로운 프로세스의 보관된 상태를 다시 적재하는 작업이 필요하는데 이를 문맥교환이라 한다
프로세스 수행(operation on process) : 시스템 내의 여러 프로세스가 동시에 수행될 수 있어야 한다.
프로세스 생성-프로세스 종료-프로세스 동기화(병행 프로세스)-통신을 위한 기법
2. CPU 스케줄링
스케줄링이란 프로세서가 많은 자원을 효율적으로 사용하기 위한 것으로 CPU가 언제 작업에 할당될 것인지를 결정하는 것을 의미한다
선점형 스케줄링 : 하나의 프로세스가 이미 CPU를 점유하고 실행 중인 프로세스로부터 CPU를 빼앗아서 실행할 수 있는 경우를 의미.
비선점형 스케줄링 : 현재 진행중인 프로세스가 스스로 대기상태에 들어가기 전까지 프로세서를 점유하고 수행됨을 의미
3. 교착상태
다중 프로그래밍 시스템에서 여러 프로세스들이 한정된 자원을 사용하려고 서로 경쟁한다
한 프로세스가 자원을 요청했을 때 그 자원을 사용할 수 없다면 대기 상태가 된다
교착상태의 4가지 필요조건 : 상호배제, 점유와 대기, 비선점, 순환대기
* 주기억장치 관리
모든 프로세스는 실행되기 전에 주기억장치에 저장된다
주기억장치 관리 정책
반입(fetch)정책 : 반입 정책은 주기억장치에 넣을 프로그램이나 데이터를 언제 보조기억장치로부터 주기억장치로 옮길것인가를 결정하는 정책을 뜻한다.
배치(placement) 정책 : 주기억장치에 프로그램이나 데이터를 배치하는 정책으로 first-fit, best-fit, worst-fit이 있다.
2. 주기억장치 해석에 대한 2가지 관점
주기억장치는 물리적, 논리적 공간으로 구분 가능
3. 주기억장치 관리 방식
연속 메모리 할당방식, 분산 메모리 할당 방식으로 구분 가능
4. 주소 바인딩(address binding)
컴파일 시간, 적재시간, 수행시간
5. 동적 적재(dynamic loading)
기억장치 공간의 효율을 높이기 위해 동적 적재가 제안
6. 중첩(overlay)
프로세스의 크기가 실제 메모리 크기로 제한되는 문제점을 해결하기 위하여 중첩을 사용
7. 스와핑(sawpping) - 프로세스 교체
스와핑이란 프로그램을 나누어서 주기억장치에 올리는 것이 아니라 프로그램 전체를 주기억장치에 올려놓고 실행한 다음, 실행이 완료된 후에 주기억장치를 사용하려는 다른 프로그램이 또 있을 때 현재 주기억장치에 있던 작업을 제거시키고 다른 프로그램 전체를 적재하는 방식이다.
스와핑 기법은 한정된 주기억장치 용량을 가지고 있을 때 유용
8. 연속/불연속 할당
기억장치는 일반적으로 2개의 분할로 나누어진다.
상주 운영체제, 미사용 부분
9. 주기억장치의 관리상의 문제점 및 해결책
단편화 현상
통합 기법
압축 기법
* 주변장치 관리
입출력 시스템 기능과 구성
입출력 장치는 물리적 입출력 장치이다.
2. 자기 디스크
3. 디스크 스케줄링
다중 프로그래밍 환경에서는 여러 프로세스가 동시에 디스크의 데이터를 읽거나 쓰려는 요청을 하게된다
이 요청을 가장 효율적인 방법으로 처리해 줄 수 있도록 하기 위한 방법이 디스크 스케줄링이다.
선입 선처리(FCFS) 스케줄링
최소 탐색 우선(SSTF) 스케줄링
스캔(scan) 스케줄링
순환 스캔(C-scan) 스케줄링
* 파일 관리
파일 개념
2. 파일 관리 시스템
파일은 추상적인 자료형태
3. 디렉터리 시스템
1단계 디텍터리
2단계 디렉터리
트리 구조 디렉터리
비순환 그래프 디렉터리
일반적인 그래프 디렉터리
4. 파일의 디스크 할당 기법
연속 할당(continuous allocation)
연결 할당
색인 할당(index allocation)
반응형'프로그래밍 > 시스템프로그래밍' 카테고리의 다른 글
[시스템프로그래밍] 9강 프로그래밍 언어 개요, 어휘 분석기, 구문 분석기, 오류 처리 (0) 2014.04.27 [시스템프로그래밍] 8강 인터프리터의 기능, 인터프리터의 구조 (0) 2014.04.27 [시스템프로그래밍] 7강 로더와 링커의 기능, 로더의 형태, 바인딩, 연결 및 재배치 로더의 설계 (0) 2014.04.26 [시스템프로그래밍] 6강 매크로, 매크로의 기능, 매크로 프로세서의 설계 (0) 2014.04.26 [시스템 프로그래밍] 5강 어셈블러 개요, 이중 패스 어셈블러, 이중 패스 어셈블러의 설계, 다중 패스 어셈블러, 테이블 처리 (0) 2014.04.26