RamaFam
[ 정보처리기사 - 필기 요점 ] 3. 운영체제 본문
운영체제 요점 정리
■ 운영체제의 기능
-사용자가 프로그램을 수행할 수 있는 환경을 제공한다.
-한정된 자원을 효율적으로 사용하게 한다.
-사용자 인터페이스를 제공한다.
-프로세서, 메모리, 주변장치 관리
-오류 처리를 담당한다.
-컴퓨터 시스템의 성능 향상을 꾀한다.
① 처리량의 향상 ② 응답시간 단축 ③ 신뢰도 향상
■ 제어 프로그램(Control Program)
- 감시 프로그램(Supervisor program)
- 작업 제어 프로그램 (Job Control program): 작업 스케줄링 담당
- 데이터 관리 프로그램(Data Management program): 자료 파일 관리
■ Spooling(Simultaneous Peripheral Operation On-Line)
- 입출력 장치의 느린 처리 속도 보완
- 용량이 크고 신속한 액세스가 가능한 디스크를 이용
■ 시분할 체제(Time-sharig system)
- 시스템은 일정시간 단위로 CPU를 한 사용자에서 다음 사용자로 신속하게 전환함으로써, 각각의 사용자들은 실제로 자신만이 컴퓨터를 사용하고 있는 것으로 여긴다.
■ 실시간 체제(Real-Time system) : 처리 시간이 제한되어 있는 자료가 발생할 때마다 이를 즉시 처리하여, 그 결과를 출력
■ 매크로(Macro) : 어셈블리 프로그래밍 시 반복되는 문장
■ 매크로 처리 과정
- 패스 1 : 매크로 정의 인식, 매크로 정의 저장
- 패스 2 : 매크로 호출 인식, 매크로 확장
■ 어셈블러를 두 개의 패스로 구성하는 이유
- 한 개의 패스만을 사용하면 기호를 모두 정의한 뒤에 해당 기호를 사용해야만 하기 때문, 기호를 정의하기 전에 사용할 수 있는 프로그램 작성을 용이하게 위해서
■ 로더(Loader) : 프로그램을 실행하기 위하여 프로그램을 보조 기억장치로부터 주기억장치에 올려놓는 기능
■ 절대 로더(Absolute Loader)의 기능
① 할당(Allocation) : 프로그래머
② 연결(Link) : 프로그래머
③ 재배치(Relocation) : 어셈블러
④ 적재(Load) : 로더
■ 프로세스 제어 블록(PCB: Process Control Block)
① 프로세스의 현 상태
② 프로세스의 식별자
③ 프로세스의 우선 순위
④ 할당된 자원에 대한 포인터
⑤ 프로그램 카운터
⑥ 레지스터 보관 장소
⑦ 프로세스의 부모 프로세스/자식 프로세스에 대한 포인터
■ SVC(Supervisor Call) 인터럽트 : 입출력 수행, 기억장치의 할당, 오퍼레이터와의 대화 등을 하기 위해 발생
■ 상호배제(Mutual Exclusion) : 어떤 프로세스가 공유 자원을 액세스 할 때 한 순간에 하나의 프로세스만 공유자원을 변경할 수 있도록 하는 기법
■ 세마포어(Semaphore)
① Dijkstra에 고안
② 상호배제 해결 방안
③ 여러 개의 프로세스가 동시에 그 값을 수정 못함
④ 연산 처리도중 인터럽트 되어서는 안된다.
■ 모니터(Monitor)
- 상호배제를 구현하는 기법
- 공유 데이터와 이 데이터를 처리하는 프로시저의 집합
- 모니터 내부의 공유 자원을 원하는 프로세스는 반드시 해당 모니터의 프로시저를 호출하여야 한다.
- 모니터 외부의 프로세스는 모니터 내부 데이터를 직접 액세스 할 수 없다.
- 한 순간에 하나의 프로세스만이 모니터에 진입할 수 있다.
- 정보 은폐(Information hiding) 개념
- 모니터 내에서 사용되는 연산은 wait와 signal이다.
■ 교착상태의 발생의 필요 조건
① 상호배제(Mutual exclusion) 조건
② 점유 및 대기조건
③ 비선점(Non-preemption)
④ 환형대기 조건
■ 교착 상태 회피(Avoidance): Dijkstra의 은행원 알고리즘
■ 스케줄링 기법
1) 선점 기법(Preemptive)
-하나의 프로세스가 CPU를 점유하고 있을 때 다른 프로세스가 CPU를 빼앗을 수 있는 방법
-순위가 높은 프로세스가 먼저 수행되어야 할 때 유용
-빠른 응답 시간을 요구하는 대화식 시분할 시스템에 유용
-많은 오버헤드를 초래한다.
2) 비선점 기법(Non-preemptive)
-프로세스에게 이미 할당된 프로세서를 강제로 빼앗을 수 없고, 그 프로세스의 사용이 끝난 후에 스케줄링 해야 하는 방법
-모든 프로세스들에 대한 요구를 공정히 처리한다.
■ 스케줄링 알고리즘의 종류
1) FIFO(First In First Out) 스케줄링
-먼저 대기 큐에 들어온 작업에게 CPU를 먼저 할당
-FCFS(First Come First Serves) 스케줄링 방법
2) 우선 순위(Priority) 스케줄링
-각 작업마다 우선순위가 주어지며, 우선순위가 제일 높은 작업 에게 먼저 CPU를 할당되는 방법
-우선순위가 낮은 작업은 무한 봉쇄나 기아상태에 빠질 수 있고, 이에 대한 해결책으로 대기시간에 따라 우선순위가 높아지는 에이징(Aging)기법을 사용할 수 있다.
3) 기한부(Deadline) 스케줄링
-작업이 주어진 제한 시간이나 만료시간 안에 작업이 완료되도록 하는 기법이다.
4) 라운드 로빈(RR: Round Robin) 스케줄링
-FIFO 스케줄링 + 선점 스케줄링
-시간할당량을 무한히 크게하면 FIFO(비선점) 방식과 같아진다.
-시간할당량이 작을 경우 문맥교환에 따른 오버헤드가 커진다.
5) SJF(Shortest Job First) 스케줄링
-처리하여야 할 작업 시간(실행 시간 추정치)이 가장 적은 프로세스에게 프로세서를 할당하는 기법
6) SRT(Shortest Remaining Time) 스케줄링
-SJF 스케줄링 기법 + 선점 기법
-실행 시간 추정치가 가장 작은 프로세스에게 먼저 CPU를 할당
7) HRN(Highest Response ratio Next)
우선순위= 대기 시간 + 서비스 받을 시간 서비스 받을 시간
■ 비선점 스케줄링 기법 : FIFO, SJF, HRN
■ 배치 전략(Placement)
1) 최적 적합(Best-fit) : 반입되는 프로그램의 크기에 가장 알맞은 크기(남은 공간이 가장 적은)의 빈 분할 공간에 적재
2) 최초 적합(First-fit) : 반입되는 프로그램의 크기에 가장 맞는 최초(주기억 장치 주소순으로)의 분할에 적재
3) 최악 적합(Worst-fit) : 반입되는 프로그램의 크기에 가장 잘 안 맞는 크기(남는 공간이 가장 큰)의 빈 분할공간에 적재
■ 압축(Compaction) : 가변분할에서 빈 분할영역을 주기억 장치 의 한 곳에 합치는 작업을 말하며, 그 결과는 하나의 커다란 빈 분할영역이 생기게 된다.
■ 가상기억 장치(Virtual memory)
-사용자에게 주기억 장치의 물리적 용량보다 훨씬 큰 가상기억 공간을 사용할 수있게 한다. -운영체제의 설계가 복잡해진다.
-오버레이 문제는 자동적으로 해결된다.
-거의 모든 단편화가 해결된다.
-페이징 기법과 세그먼테이션 기법이 있다.
1) 페이징 시스템의 장점
-연속 할당의 단점인 외부 단편화 현상이 제거
-주기억 장치의 효율을 높인다.
2) 페이징 시스템의 단점
-페이지 테이블을 사용하므로 기억장소의 낭비를 가져온다.
-할당된 마지막 페이지 내에는 내부 단편화가 있을 수 있다.
■ 가상 기억 장치 관리 정책
① Fetch 정책 : 언제 어느 만큼의 페이지를 물리적인 기억 장치 에 가져올 것인가를 결정하는 정책
② Placement 정책
③ Replacement 정책
■ 페이지 교체 및 할당 알고리즘
① Belady의 최적 알고리즘 : 이후에 가장 오랫동안 사용되지 않 을 페이지를 대치, 실현은 불가능하다.
② FIFO(First In First Out) 알고리즘: 가장 먼저 주기억 장치에 들어온 페이지를 대치
③ LRU(Least Recently Used) 기법: 가장 치근에 사용되지 않은 페이지, 즉 가장 오랫동안 사용되지 않은 페이지를 선택하여 대치
④ LFU(Least Frequently Used) 기법: 참조된 횟수가 가장 적은 페이지를 대치시키는 방법
■ 스레싱(Thrashing)
- 너무 빈번히 페이지 부재가 일어나는 현상
- 프로세스 실행에 소요되는 시간보다 페이지 이동에 소요되는 시간이 더 커지므로 CPU 효율이 나빠진다.
■ 구역성(Locality)
① 시간 구역성: 순환(looping), 서브루틴(sub-routine), 스택(stack), 카운팅(counting), 집계(totaling)
② 공간 구역성 : 배열(array), 순차적 코드(sequential code), 관련된 변수의 선언
■ 워킹 세트(Working set)
-프로세스가 자주 참조하는 페이지의 집합
-스레싱을 방지할 수 있는 기법
-주기억 장치에 확보된 경우에만 실행해야 한다.
■ 페이지 크기가 작을 경우
-페이지 사상표의 공간을 더 많이 요구한다.
-단편화가 감소된다.
-특정한 지역성만을 포함하기 때문에 기억 장치 효율이 좋다. (유용성이 크다)
-페이지 이동 효율이 낮다.
■ 페이지 크기가 클 경우
-페이지 사상표의 크기가 줄어든다.
-페이지 단편화로 인해 많은 기억 공간을 낭비하게 된다.
-페이지 이동 효율이 좋다.
-참조되는 정보와는 무관한 정보가 주기억 장치에 적재될 수 있다.
■ 디스크 스케줄링 기법
1) FCFS(First Come First Served) : 입출력 요청 대기 큐에 들어 온 순서대로 서비스
2) SSTF(Shortest Seek Time First)
- 탐색 거리가 가장 짧은 요청이 먼저 서비스를 받는 기법
- 현재 디스크 헤드 위치에서 가장 가까운 디스크 주소에 대한 접근 요구를 우선적으로 처리한다.
- 안쪽이나 바깥쪽 트랙이 가운데 트랙보다 서비스를 덜 받는 경향이 있다.
- 처리량이 주안점인 일괄처리에 유용
3) SCAN
- 디스크 헤드가 맨 바깥쪽 트랙에서 가장 안쪽 트랙 쪽으로 이동하면서 해당되는 트랙에 대한 요구를 차례대로 서비스 해 주는 방식
4) C-SCAN
- 항상 바깥쪽 실린더에서 안쪽 실린더로 이동하면서 가장 짧은 탐색 시간을 갖는 요청을 서비스하는 방법
5) N-stop SCAN
- 어떤 방향의 진행이 시작될 당시에 대기중이던 요청들만 서비스하고, 진행 도중 도착한 요청들은 한데 모아서 다음의 반대 방향으로의 서비스 할 수 있도록 한 스케줄링 기법
■ 파일 접근 방식
1) 순차 접근 파일(Sequential access file)
-레코드들을 하나씩 차례대로 저장한 구조
-부가적인 정보를 보관하지 않으므로 불필요한 공간 낭비가 없다.
-다음 레코드의 접근이 빠르다.
-파일 갱신시마다 파일을 재구성해야 한다.
-저장 매체의 이용 효율이 가장 높다.
-임의의 특정 레코드를 검색하는데 효율이 낮다.
2) 직접 접근 파일(Direct access file)
-직접 접근 기억 장치의 물리적 주소를 통해 접근
■ 디렉토리의 구조
① 단일 디렉토리 구조(=1단계 디렉토리) : 모든 파일들이 유일한 이름을 가지고 있다.
② 2단계 디렉토리 구조 : 중앙에 마스터 파일 디렉토리가 있고, 그 아래 사용자 파일 디렉토리가 있는 구조
③ 계층적 디렉토리 구조(=트리 디렉토리 구조) : UNIX나 윈도우 운영체제에서 채택하고 있는 구조
④ 비주기 그래프 디렉토리 구조(=비순환 그래프 디렉토리) : 파일 또는 디렉토리의 공동사용이 가능
⑤ 일반적인 그래프 디렉토리구조 : 각 디렉토리마다 불필요한 파일의 제거를 위한 참조 카운터가 필요하다.
■ 디스크 공간 할당 기법
1) 연속 할당(Continuous allocation)
-파일의 크기에 알맞은 연속 공간이 없으며 파일을 생성할 수 없다.
-파일 생성 시점에서 미리 전체적인 파일의 크기를 알아야 한다.
-논리적으로 연속한 레코드들은 물리적으로 인접하게 보조기억 장치에 저장되므로 순차 접근과 직접 접근 모두 접근 시간이 감소된다.
-디스크의 내부 또는 외부 단편화가 발생될 수 있다.
2) 연결 할당(Linked allocation)
-압축이 필요하지 않은 기법
-직접 접근이 어렵다.
-포인터로 인해 실제 사용 가능한 기억 공간이 낭비된다.
-외부 단편화가 발생되지 않는다.
■ 자원 보호 기법
① 접근 제어 행렬 ② 접근 제어 리스트 ③ 권한 리스트
■ 보안(Security)
① 외부 보안 ② 사용자 인터페이스 보안 ③ 내부 보안
■ 처리기와 기억 장치와의 관계에 따른 분류
1) 강결합 시스템(Tightly-Coupled)
-하나의 운영체제하에서 여러 개의 프로세서가 하나의 메모리를 공유하는 시스템
-다중 처리(Multiprocesser) 시스템이라고도 한다.
-프로세서 간 통신은 공유 메모리를 통하여 이루어진다.
2) 약결합 시스템(Loosely-Coupled)
-둘 이상의 독립된 컴퓨터 시스템을 통신 링크를 통하여 연결한 시스템
-분산(Distributed) 시스템 -독자적인 운영체제와 기억장치를 가진다.
-프로세스 간의 통신은 메시지 전달이나 분산 공유 기억 장치를 통하여 이루어진다.
■ 주종(Master/Slave) 다중 처리기 시스템
-주프로세서는 입출력과 연산을 수행
-종프로세서는 연산만 수행한다. -주프로세서의 고장시 전 시스템이 멈춘다.
-주프로세서만이 운영체제를 수행한다.
■ 분산 처리 시스템의 장점
① 통신과 정보 공유
② 자원의 공유와 부하 균형
③ 점진적인 확장
④ 신뢰성, 가용성 및 고장 허용성의 증진
⑤ 성능 향상
⑥ 연산 속도 향상 (※ 분산처리시스템은 보안유지는 어렵다.)
■ 분산 처리 시스템의 구조
1) 성형 연결(Star connection)
- 중앙 컴퓨터 고장시 모든 사이트 간 통신은 불가능하다.
2) 링 연결(Ring connection)
- 각 사이트는 정확히 다른 두 사이트와 물리적으로 연결됨.
- 정보 전달 방향은 단방향 또는 양방향일 수 있다.
- 기본비용은 사이트의 수에 비례한다.
- 메시지가 링을 순환할 경우 통신비용은 커질 수 있다.
3) 다중 접근 버스 연결(Multiaccess bus connetion)
- 한 사이트 고장 시 나머지 사이트 간의 통신에 영향을 주지 않지만 링크가 고장나면 모든 사이트간의 통신은 불가능하다.
■ 분산 파일 시스템의 실례
① NFS ② Locus ③Andrew
■ 분산 운영체제하에서 이주의 종류
-데이터 이주(Data migration)
-연산 이주(Computation migration) : 많은 양의 파일 처리
-프로세스 이주(Process migration)
■ UNIX 운영체제의 특징
-대화식 시분할 운영체제
-다중 태스킹(Multitasking) 운영체제
-다중 사용자(Multiuser) 운영체제
-대부분의 명령어가 고급언어인 C언어로 되어 있다.
-이식성이 좋다.(호환성)
-풍부한 네트워크 기능을 제공한다.
-파일 시스템이 계층적 트리 구조이다.
■ 쉘(shell)
-사용자 명령을 입력 받아 시스템 기능을 수행하는 명령해석기
-사용자와 시스템간의 인터페이스 담당
-보조기억장치에 저장되어 있다.
■ 커널(Kernel)
-항상 주기억장치에 상주되어 있다.
-비교적 명령어 크기가 적다.
-프로세스, 기억장치, 입출력장치, 가상메모리, 작업 스케줄링 등 운영체제의 기능을 제공
■ UNIX 명령어
-chmod: 사용자가 지정한 파일이나 디렉토리의 접근 허가 모드를 바꾼다. 파일의 접근을 제한하는데 사용되는 명령어.
-fork: 프로세스를 생성(복제)
-exec : 새로운 프로그램을 수행시키기 위한 시스템 호출이다.
■ Inode의 내용: 파일에 대한 상태 정보가 보관된다.
① 파일 소유자의 식별번호
② 데이터 블록의 주소
③ 파일의 크기
④ 파일이 만들어진 시간
⑤ 최종 수정 시간
⑥ 파일에 대한 링크의 수 (※ inode는 파일 경로명을 가지고 있지 않다.)
(※ 시간은 항상 최종 시간을 갖는다. 최초시간은 아니다.)
■ 파이프(pipe)
-프로세스 간의 데이터 전송로로서 파이프에 의한 프로세스 간 정보 교환은 공통 파일을 공유함으로써 이루어진다.
-전송된 데이터는 FIFO(First In First Out)방식으로 상대에게 전달된다.
'공부 > 정보처리기사' 카테고리의 다른 글
[ 정보처리기사 - 필기 요점 ] 5. 데이터 통신 (0) | 2019.03.29 |
---|---|
[ 정보처리기사 - 필기 요점 ] 4. 소프트웨어 공학 (0) | 2019.03.29 |
[ 정보처리기사 - 필기 요점 ] 2. 전자계산기 구조 (0) | 2019.03.29 |
[ 정보처리기사 - 필기 요점 ] 1. 데이터베이스 (0) | 2019.03.29 |