본문으로 바로가기

운영체제

 - 컴퓨터 시스템 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임


운영체제의 목적

 - 처리 능력

 - 반환 시간

 - 사용 가능도

 - 신뢰도


운영체제의 기능

 - 프로세서, 기억장치, 입·출력장치, 파일 및 정보 등의 자원을 관리

 - 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공

 - 사용자와 시스템 간의 편리한 인터페이스를 제공

 - 시스템의 각종 하드웨어와 네트워크를 관리·제어

 - 데이터를 관리하고 데이터 및 자원의 공유 기능을 제공

 - 시스템의 오류를 검사하고 복구


운영체제의 주요 자원 관리

 - 프로세스 관리

 - 기억장치 관리

 - 주변장치 관리

 - 파일 관리


Windows

 - 1990년대 MS사가 개발한 운영체제


Windows의 특징

 - 그래픽 사용자 인터페이스(GUI)

 - 선점형 멀티태스킹

 - PnP : 하드웨어를 설치했을 때 해당 하드웨어를 사용하는데 필요한 시스템 환경을 운영체제가 자동으로 구성

 - OLE : 여러 응용 프로그램에서 작성한 문자나 그림 등의 객체를 현재 작성 중인 문서에 자유롭게 연결 및 삽입 가능

 - 255자 파일명

 - Single-User 시스템

 


Unix

 - 소스가 공개된 개방형 시스템

 - 이식성이 높으며 장치, 프로세스 간의 호환성이 높음

 - 크기가 작고 이해하기 쉬움

 - 다중 사용자, 다중 작업을 지원

 - 많은 네트워킹 기능을 제공하므로 통신망 관리용 운영체제로 적합

 - 트리 구조의 파일 시스템을 갖음

 - 전문적인 프로그램 개발에 용이


Unix 시스템의 구성

 - 커널(Kernel)

   - UNIX의 가장 핵심적인 부분

   - 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행

   - 하드웨어를 보호하고 프로그램과 하드웨어 간의 인터페이스 역할을 담당

   - 프로세스 관리, 기억장치 관리, 파일 관리, 입·출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러 기능 수행

 - 쉘(Shell)

   - 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기

   - 시스템과 사용자 간의 인터페이스를 담당

   - 주기억장치에 상주하지 않고 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체 처리 가능

   - 파이프라인 기능을 지원하고 입·출력 재지정을 통해 출력과 입력의 방향을 변경할 수 있음

   - 공용 Shell(Bourne Shell, C Shell, Korn Shell)이나 사용자 자신이 만든 Shell을 사용할 수 있음


Unix 부팅 순서

 1. Power ON

 2. Boot PROM

 3. Boot Program

 4. 커널 초기화

 5. init 프로세스 동작

 6. svc.startd


Linux

 - Unix를 기반으로 개발한 운영체제

 - Unix와 완벽하게 호환

 - 대부분의 특징이 Unix와 동일


Linux 부팅 순서

 1. Power ON

 2. ROM BIOS

 3. GRUB

 4. 커널 이미지 적재

 5. Swapper 생성

 6. init 생성 및 커널부팅, 초기화


기억장치 관리 전략

 - 기억장치의 관리 전략은 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것으로 반입(Fetch) 전략, 배치(Placement) 전략, 교체(Replacement) 전략이 있음


반입(Fetch) 전략

 - 요구 반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램, 데이터 등의 참조를 요구할 때 적재하는 방법

 - 예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램, 데이터를 미리 예상하여 적재하는 방법


배치(Placement) 전략

 - 최초 적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법

 - 최적 적합(Best Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법

 - 최악 적합(Worst Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 크게 남기는 분할 영역에 배치시키는 방법


교체(replacement) 전략

 - 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략


주기억장치 할당

 - 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용이며 연속 할당 기법과 분산 할당 기법으로 분류할 수 있음


단일 분할 할당 기법

 - 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법

 - 운영체제를 보호하고 프로그램이 사용자 영역만을 사용하기 위해 운영체제 영역과 사용자 영역을 구분하는 경계 레지스터가 사용

 - 오버레이 기법 : 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법

 - 스와핑 기법 : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법


 

다중 분할 할당 기법

 - 고정 분할 할당 기법(정적 할당 기법) : 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법

 - 가변 분할 할당 기법(동적 할당 기법) : 단편화를 줄이기 위한 것으로 미리 주기억장치를 분할해 놓는 것이 아니라 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법


가상기억장치

 - 보조기억장치의 일부를 주기억장치처럼 사용하는 것으로 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법


페이징 기법

 - 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법

 - 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있음

 - 페이지 맵 테이블 사용으로 비용이 증가되고 처리 속도가 감소


세그멘테이션 기법

 - 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법

 - 세그멘테이션 기법을 이용하는 궁극적인 이유는 기억공간을 절약하기 위해

 - 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있음


페이지 교체 알고리즘

 - 페이지 부재가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법

 - OPT(OPTimal relacement, 최적교체)

   - 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법

 - FIFO(First In First Out)

   - 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법

참조열 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0
페이지
프레임
7 7 7 2 2 2 2 4 4 4 0 0 0 0 0 0 0 7 7
  0 0 0 0 3 3 3 2 2 2 2 2 1 1 1 1 1 0
    1 1 1 1 0 0 0 3 3 3 3 3 2 2 2 2 2
부재 발생 F F F F   F F F F F F     F F     F F

 - LRU(Least Recently Used)

   - 최근에 가장 오랫동안 사용하지 않으 페이지를 교체하는 기법

참조열 2 3 2 1 5 2 3 5
페이지
프레임
2 2 2 2 2 2 2 2
  3 3 3 5 5 5 5
      1 1 1 3 3
부재 발생 F F   F F   F  

 

 - LFU(Least Frequently Used)

   - 사용 빈도가 가장 적은 페이지를 교체하는 기법

 - NUR(Not Used Recently)

   - 최근에 사용하지 않은 페이지를 교체하는 기법

   - 최근의 사용 여부를 확인하기 위해서 각 페이지마다 두 개 비트, 즉 참조 비트와 변형 비트가 사용


가상기억장치 기타 관리 사항

 - 가상기억장치를 구현할 때 시스템의 성능에 영향을 미치는 페이지 크기나 Locality, 워킹 셋, 페이지 부재 빈도, 프리페이징 등이 있음


페이지 크기

 - 페이지 크기가 작을 경우

   - 페이지 단편화가 감소되고, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어 듬

   - 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋을 유지

   - 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어짐

   - 디스크 접근 횟수가 많아져서 전체적인 입·출력 시간은 늘어남

 - 페이지 크기가 클 경우

   - 페이지 맵 테이블 크기가 작아지고, 맵핑 속도가 빨라짐

   - 디스크 접근 횟수가 줄어들어 전체적인 입·출력의 효율성이 증가


Locality

 - 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론

 - 스래싱을 방지하기 위한 워킹 셋 이론의 기반

 - 시간 구역성(Temporal Locality)

   - 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상

   - 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음을 의미

   - 시간 구역성이 이루어지는 기억 장소 : Loop, Stack, 부 프로그램, Counting, 집계에 사용되는 변수

 - 공간 구역성(Spatial Locality)

   - 프로세스 실행 시 일정 위치의 페이지를 집중적으로 엑세스하는 현상

   - 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음을 의미

   - 공간 구역성이 이루어지는 기억장소 : 배열 순회, 순차적 코드의 실행,  같은 영역에 있는 변수를 참조할 때 사용


워킹 셋(Working Set)

 - 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합

 - 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정

 - 시간이 지남에 따라 자주 참조되는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간에 따라 변경


페이지 부재 빈도 방식

 - 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상이며, 페이지 부재 빈도는 페이지 부재가 일어나는 횟수를 의미

 - 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식


프리페이징

 - 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법


스래싱

 - 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

 - 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정중 자주 페이지 부재가 발생함으로써 나타나는 현상으로 전체 시스템의 성능이 저하

 - 스래싱 현상 방지 방법

   - 다중 프로그래밍의 정보를 적정 수준으로 유지

   - 페이지 부재 빈도를 조절하여 사용

   - 워킹 셋을 유지

   - 부족한 자원을 증설하고 일부 프로세스를 중단


프로세스

 - 일반적으로 프로세서에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 작업, 태스크라고도 함


PCB(Process Control Block, 프로세스 제어 블록)

 - 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳

저장 정보 설명
프로세스의 현재 상태 준비, 대기, 실행 등의 프로세스 상태
포인터 - 부모 프로세스에 대한 포인터 : 부모 프로세스의 주소 기억
- 자식 프로세스에 대한 포인터 : 자식 프로세스의 주소 기억
- 프로세스가 위치한 메모리에 대한 포인터 : 현재 프로세스가 위치한 주소 기억
- 할당된 자원에 대한 포인터 : 프로세스에 할당된 각 자원에 대한 주소 기억
프로세스 고유 식별자 프로세스를 구분할 수 있는 고유의 번호
스케줄링 및 프로세스의 우선순위 스케줄링 정보 및 프로세스가 실행될 우선순위
cpu 레지스터 정보 누산기, 인덱스 레지스터, 범용 레지스터, 프로그램 카운터 등에 대한 정보
주기억장치 관리 정보 기준 레지스터 ,페이지 테이블에 대한 정보
입·출력 상태 정보 입·출력장치, 개방된 파일 목록
계정 정보 CPU 사용 시간, 실제 사용 시간, 한정된 시간

프로세스 상태 종류

- 보류 (pending)
- 준비 (ready)
- 실행 (running)
- 대기 (blocked)
- 완료 (terminated)


스레드(Thread)

 - 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위

 - 하나의 프로세스에는 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드
 - 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능
 - 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당
 - 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상 시킬 수 있음
 - 응용 프로그램의 응답 시간을 단축
 - 프로세스들 간 통신 향상
 - 공통적으로 접근 가능한 기억장치를 통해 효율적인 통신
 - 실행 환경을 공유하여 기억장소의 낭비를 줄임


스케줄링

 - 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미


스케줄링의 목적

 - 공정성

 - 처리율 증가

 - CPU 이용률 증가

 - 우선순위제도

 - 오버헤드 최소화

 - 응답 시간 최소화

 - 반환 시간 최소화

 - 대기 시간 최소화

 - 균형 있는 자원의 사용

 - 무한 연기 회피


프로세스 스케줄링의 기법

 - 비선점(Non-Preemptive) 스케줄링

   - 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

   - 프로세스가 CPU를 할당 받으면 해당 프로세스가 완료될 때까지 CPU를 사용

   - 모든 프로세스에 대한 요구를 공정하게 처리할 수 있음

   - 일괄 처리 방식에 적합

   - 중요한 작업이 중요하지 않은 작업을 기다리는 경우가 발생할 수 있음

   - 비선점 스케줄링의 종류 : FCFS, SJF, 우선순위, HRN, 기한부

 - 선점(Preemptive) 스케줄링

   - 하나의 프로세스가 CPU를 할당받아 실행하고 있을때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법

   - 우선순위가 높은 프로세스를 빠르게 처리할 수 있음

   - 시분할 시스템에 사용

   - 많은 오버헤드를 초래

   - 선점 스케줄링의 종류 : Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐


프로토콜

 - 데이터통신에 있어서 신뢰성 있게 효율적이고 안전하게 정보를 주고받기 위해서 정보의 송·수신자측 또는 네트워크 내에서 사전에 약속된 규약 또는 규범


프로토콜의 구성요소

 - 구문(Syntax) : 데이터의 구조나 형식을 가르키며 데이터가 표현되는 순서를 의미

 - 의미(Semantics) : 비트의 영역별 의미를 나타냄 즉 특정 패턴을 어떻게 해석하고 그를 기반으로 어떤 동작을 할 것인가를 결정

 - 타이밍(Timing) : 데이터를 언제 얼마나 빠른 속도로 전송할 것인가를 나타냄


OSI 7계층

 - 국제표준화기구에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것

계층 특징 데이터 종류
7 응용
(Application)
- 각종 응용서비스 제공
- 네트워크 관리
메시지
(Message)
FTP, TFTP, SNMP, SMTP, Telnet, HTTP, DNS, DHCP
6 표현
(Presentation)
- 네트워크 보안(암·복호화)
- 압축/압축해제, 포맷 변환 수행
ASCII, Mpeg, jpg, MME
5 세션
(Session)
- 소켓프로그램
- 동기화
- 세션 연결/관리/종료
전송모드 결정(반이중,전이중 등),
SQL, RPC
4 전송
(Transport)
- 데이터 전송보장
- 흐름 제어
- Quality Of Service(QoS)
세그먼트
(Segment)
TCP, UDP, SCTP
3 네트워크
(Network)
- 통신경로 설정, 중계기능 담당
- 라우팅
- IPv4, IPv6
패킷
(Packet)
IP, ICMP, IGMP, ARP, RARP, NAT, RIP, BGP
2 데이터 링크
(Data link)
- 오류제어, Frame화
- 매체제어(MAC)
- 에러검출, 에러정정, 흐름제어
프레임
(Frame)
이더넷, 토큰링, PPP, SLIP, 802.11(WLAN)
1 물리
(Physical)
- 물리적 연결설정, 해제
- 전송방식, 전송매체
비트 스트림
(Bit Stream)
기계적, 전기적, 절차적 규격

인터넷(Internet)

 - TCP/IP 프로토콜을 기반으로 하여 전 세계 수많은 컴퓨터와 네트워크들이 연결된 컴퓨터 통신망

 - 미 국방성의 ARPANET에서 시작

 - 유닉스 운영체제를 기반으로 함


IP 주소

 - 인터넷에 연결되는 모든 컴퓨터 자원을 구분하기 위한 고유한 주소


IPv4

 - 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 프로토콜

 - IPv4의 주소체계는 총 12자리이며 네 부분으로 나뉨 각 부분은 0~255까지 3자리의 수로 표현된다. IPv4 주소는 32비트로 구성되어 있으며, 현재 인터넷 사용자의 증가로 인해 주소공간의 고갈에 대한 우려가 높아지고 있음

 - 대안으로 128비트 주소체계를 갖는 IPv6가 등장


IPv6

 - 현재 사용하고 있는 IP 주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발

 - 16비트씩 8부분, 총 128비트로 구성

 - IPv4에 비해 자료 전송 속도가 빠름

 - 인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결

 - IPv4와 호환성이 뛰어남

 - 주소의 확장성, 융통성, 연동성이 뛰어나며, 실시간 흐름 제어로 향상된 멀티미디어 기능을 지원

 - Traffic Class, Flow Label을 이용하여 등급별, 서비스별로 패킷을 구분할 수 있어 품질 보장에 용이

 - 유니캐스트, 멀티캐스트, 애니캐스트 세 가지 주소 체계로 나뉨