1. 운영체제(OS, Operating System)
1) 개념
- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어
- 컴퓨터를 편리하게 사용하고 하드웨어를 효율적으로 사용할 수 있도록 함
- 스스로 어떤 유용한 기능도 수행하지 않고 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 마련해줌
2) 기능
- 사용자와 시스템 간의 편리한 인터페이스 제공
- 자원의 효과적인 경영을 위해 스케줄링 기능 제공, 자원 보호 기능 제공
- 오류로부터 시스템 보호, 사용자들 간에 데이터 공유
3) 목적
- 처리 능력 향상, 응답 시간 단축, 신뢰도 향상, 사용 가능도 향상
4) 운영 방식
- 일괄 처리 시스템(Batch Processing System): 일정량 또는 일정 기간 동안 데이터를 한꺼번에 모아서 처리
- 다중 프로그래밍 시스템(Multi-Programming System): 자원 활용률을 극대화하기 위해 2개 이상의 프로그램을 주기억 장치에 기억시키고 CPU를 번갈아 사용하면서 처리하는 방식
- 시분할 시스템(Time Sharing System): CPU의 전체 사용 시간을 작은 작업 시간량(Time Slice)으로 나누어서 그 시간량 동안만 번갈아 가면서 CPU를 할당하여 각 작업을 처리하는 방식, 실제로 많은 사용자가 하나의 컴퓨터를 공유하고 있지만 마치 자신만이 컴퓨터 시스템을 독점하여 사용하고 있는 것처럼 느끼게 된다
- 다중 처리 시스템(Multi-Processing System): 동시에 프로그램을 수행할 수 있는 CPU를 두 개 이상 두고 각각 그 업무를 분담하여 처리할 수 있는 방식
- 실시간 처리 시스템(Real Time Processing System): 데이터 발생 즉시, 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출
- 다중 시스템 모드(Multi-Mode System): 일괄 처리 + 시분할 + 다중 처리 + 실시간 처리
- 분산 처리 시스템(Distributed Processing System): 여러 대의 컴퓨터로 작업을 나누어 처리하여 그 내용이나 결과를 통신망을 이용하여 상호 교환되도록 연결하는 방식
2. 운영체제의 구성
1) 제어 프로그램(Control Program)
- 감시 프로그램, 작업 제어 프로그램, 데이터 관리 프로그램
2) 처리 프로그램(Processing Program)
- 언어 번역 프로그램: 컴파일러, 어셈블러, 인터프리터 등
- 서비스 프로그램: 연계 편집, 유틸리티, 정렬, 병합 등
- 문제 프로그램: 특정 업무를 처리하기 위해 사용자가 작성한 프로그램
3) unmask
- 파일이나 디렉터리 생성 시 초기 접근 권한을 설정할 때 사용
- 초기 파일의 권한은 666이고 디렉터리는 777이며 여기에 unmas 값을 빼서 초기 파일 권한을 설정할 수 있음
4) 리눅스 로그파일
- utmp: 현재 로그인한 사용자 상태 정보를 담고 있는 로그파일
- wtmp: 성공한 로그인/로그아웃 정보와 시스템 boot/shutdown의 히스토리를 담고 있는 로그파일
- btmp: 실패한 로그인 정보를 담고 있는 로그파일
3. 프로세스(Process)
1) 정의
- 실행중인 프로그램, 실행 가능한 PCB를 가진 프로그램
- 프로세서가 할당되는 실체, 프로시저가 활동중인 것, 비동기적 행위를 일으키는 주체
2) 프로세스 제어 블록(PCB, Process Control Block)
- 운영체제가 프로세스를 관리하기 위해 프로세스에 대해 중요한 정보를 저장해 놓은 곳
- 프로세스가 생성될 때마다 고유의 PCB가 생성되며 프로세스가 소멸되면 PCB도 소멸됨
- 저장 정보: 프로세스의 현재 상태, 프로세스의 우선 순위, 프로세스에 할당된 자원에 대한 정보, CPU 레지스터 정보
3) 프로세스 상태 전이
- 준비 상태, 실행 상태, 대기 상태
4) 스레드(Thread)
- 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있음
- 한 개의 프세스는 여러 개의 스레드를 가질 수 있음
- 구분: 커널 스레드(커널 레벨에서 생성), 사용자 스레드(라이브러리에 의해 구현된 일반적인 스레드)
- 사용자 수준 스레드의 장점: 높은 이식성(커널 변경 필요 없음, 모든 운영체제 적용 가능), 오버헤드 감소(커널 도움 없이 스레드 교환 가능)
4. 병행 프로세스와 교착상태
1) 병행 프로세스(Concurrent Process)
- 두 개 이상의 프로세스들이 동시에 실행 상태에 있는 것
- 오류 방지 방법: 임계구역, 상호배제, 동기화 기법
2) 교착상태(Deadlock)
- 둘 이상의 프로세스들이 서로 다른 프로세스가 차지하고 있는 자원을 요구하며 무한정 기다리게 되어 해당 프로세스들의 진행이 중단되는 현상
- 발생 조건: 상호배재, 점유 및 대기, 비선점, 환형 대기
- 해결 방법: 예방, 회피, 발견, 회복
5. 프로세스 스케줄링(Process Scheduling)
1) 개념
- 프로세스의 생성 및 실행에 필요한 시스템의 자원을 해당 프로세스에 할당하는 작업
- 다중 프로그래밍 운영체제에서 자원의 성능을 향상시키고 효율적인 프로세서의 관리를 위해 작업 순서를 결정하는 것
- 목적: 모든 작업들에 대한 공평성 유지, 단위 시간당 처리량 최대화, 응답 시간 및 반환 시간 최소화, 운영체제의 오버헤드 최소화
- 바람직한 스케줄링 정책: CPU 이용률 극대화, 응답 시간 및 반환 시간 최소화, 대기 시간 최소화
2) 비선점(Non-Preemptive) 스케줄링
- 한 프로세스가 일단 CPU를 할당받으면 다른 프로세스가 CPU를 강제로 빼앗을 수 없고, 사용이 끝날 때까지 기다리는 방식
- 모든 프로세스들에 대한 요구를 공정히 처리하여 응답 시간의 예측이 용이
- CPU의 사용 시간이 짧은 프로세스들이 사용 시간이 긴 프로세스들로 인하여 오래 기다리는 경우가 발생할 수 있음
- FIFO(First In First Out), SJF(Shortest Job First), HRN(Highest Response-ratio Next), 우선순위(Priority)
3) 선점(Preemptive) 스케줄링
- 한 프로세스가 CPU를 할당받아 실행 중이라도 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗을 수 있는 방식
- 긴급하고 높은 우선순위의 프로세스들이 빠르게 처리될 수 있음
- 선점을 위한 시간 배당에 대한 인터럽트용 타이머 클럭(Clock)이 필요
- 온라인 응용에 적합한 스케줄링
- RR(Round Robing), SRT(Shortest Remaining Time), 다단계 큐(Multi-Level Queue), 다단계 피드백 큐(Multi-Level Feedback Queue)
6. 기억 장치 관리 전략
1) 반입 전략
- 보조 기억 장치에 보관 중인 프로그램이나 데이터를 주기억 장치로 언제 가져올 것인지 결정하는 전략
- 요구 반입, 예상 반입
2) 배치 전략
- 보조 기억 장치에 보관 중인 프로그램이나 데이터를 주기억 장치의 어디로 가져올 것인지 결정하는 전략
- 최초 적합(First-Fit), 최적 적합(Best-Fit), 최악 적합(Worst-Fit)
3) 기억 장치 교체 전략
- 주기억 장치의 모든 페이지 프레임이 사용중일 때 어떤 페이지 프레임을 교체할 것인지 결정하는 전략
- OPT(OPTimal Replacement), FIFO(First In First Out), LRU(Least Recently Used), LFU(Least Frequently Used), NUR(Not Used Recently), SCR(SecondChance Replacement)
7. 가상 기억 장치 구현 기법
1) 가상 기억 장치(Virtual Memory)
- 주기억 장치의 부족한 용량을 해결하기 위해 보조 기억 장치를 주기억 장치처럼 사용하는 기법
- 구현 방법: 페이징 기법, 세그멘테이션 기법
2) 페이징(Paging) 기법
- 페이지: 가상 기억 장치에 보관된 프로그램과 주기억 장치의 영역을 동일한 크기로 나눈 것
- 나눠진 프로그램을 동일하게 나눠진 주기억 장치의 영역에 적재시켜 실행하는 기법
- 가상 기억 장치에서 주기억 장치로 주소를 조정(매핑)하기 위해 페이지의 위치 정보를 가진 페이지 맵 테이블이 필요
3) 세그먼테이션(Segmentation) 기법
- 세그먼트: 큰 프로그램을 보다 작은 프로그램으로 분할해서 하나의 논리적 단위로 묶어서 주기억 장치에 읽어 들일 수 있는 최소 단위
- 가상 기억 장치에 보관된 프로그램을 다양한 크기로 나눈 후, 나눠진 프로그램을 주기억 자치에 적재시켜 실행하는 기법
4) 구역성(Locality)
- 프로세스가 실행되는 동안 일부 페이지만 집중적으로 참조되는 경향
- 시간 구역성, 공간 구역성
5) 워킹 셋(Working Set)
- 운영체제의 가상 기억 장치 관리에서 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
6) 스래싱(Thrashing)
- 하나의 프로세스가 작업 수행 과정에 수행하는 기억 장치 접근에서 지나치게 페이지 부재가 발생하여 프로세스 수행에 소요되는 시간보다 페이지 이동에 소요되는 시간이 더 커지는 현상
7) 페이지 부재(Page Fault)
- 참조할 페이지가 주기억 장치에 없는 현상
8. 디스크 스케줄링(Disk Scheduling)
- 사용할 데이터가 디스크의 여러 곳에 저장되어 있을 때 데이터를 액세스하기 위해 디스크 헤드의 이동 경로를 결정하는 기법
1) 디스크 스케줄링의 종류
- FCFS(First Come First Service) = FIFO
- SSTF(Shortest Seek Time First): 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스
- SCAN: 현재 헤드의 위치에서 진행 방향의 모든 요청을 서비스하면서 끝까지 이동한 후 반대 방향의 요청을 서비스하는 기법
- 그 외: C-SCAN, N-step SCAN, 에센바흐 스케줄링
9. 정보 관리
1) 파일 시스템(File System)
- 파일: 연관된 데이터들의 집합, 각각 고유한 이름, 주로 보조 기억 장치에 저장하여 사용
- 보조 기억 장치와 그 안에 저장된 파일을 관리하는 시스템
2) 파일 디스크립터(File Descriptor)
- 파일을 관리하기 위해 필요한 파일에 대한 정보를 갖고 있는 제어 블록
- 파일 제어 블록(FCB, File Control Block)이라고도 함
- 파일마다 독립적으로 존재하며 시스템에 따라 다른 구조를 가질 수 있음
- 대개 보조 기억 장치에 저장되어 있다가 해당 파일이 열릴 때 주기억 장치로 옮겨짐
- 파일 시스템이 관리하므로 사용자가 직접 참조할 수 없음
3) 파일 구조의 종류
- 순차 파일(Sequential File), 색인 순차 파일(Indexed Sequential FIle), 직접 파일(Direct File)
10. 분산 운영체제
1) 다중 처리기(Multi-processor)
- 하나의 시스템에 2개 이상의 프로세서를 가지고 동시에 여러 개의 작업을 처리하는 장치
- 상호 연결 방법: 시분할 공유 버스, 크로스바 교환 행렬, 하이퍼 큐브, 다중 포트 메모리
- 운영체제의 구조: 대칭적 처리기, 주/종 처리기, 분리 수행 처리기
- 구조: 약결합 시스템, 강결합 시스템
2) 분산 처리 시스템(Distributed Processing System)
- 여러 대의 컴퓨터들에 의해 작업한 결과를 통신망을 이용하여 상호 교환할 수 있도록 연결되어 있는 시스템으로 시스템의 점진적 확장이 용이
- 단일 시스템에 비해 처리용량, 연산 속도, 신뢰성, 사용 가능도가 향상됨
- 중앙 집중형 시스템에 비해 시스템 설계가 복잡하고 소프트웨어 개발이 어려움
3) 투명성(Transparency)
- 분산 처리 운영체제에서 구체적인 시스템 환경을 사용자가 알 수 없도록 하며, 또한 사용자들로 하여금 이에 대한 정보가 없어도 원하는 작업을 수행할 수 있도록 지원하는 개념
- 종류: 위치 투명성, 이주 투명성, 복제 투명성, 병행 투명성
4) 분산 운영체제 구조
- 성형 구조, 링형 구조, 다중 접근 버스 구조, 계층 연결, 완전 연결 구조
11. UNIX
1) 특징
- 시분할(Time-sharing) 시스템을 위해 설계된 대화식 운영체제
- 소스가 공개된 개방향 시스템(Open System)
- 트리 구조의 파일 시스템, 멀티유저/멀티태스킹 지원
- 하나 이상의 작업에 대하여 백그라운드에서 수행 가능
- 90% 이상이 고급 언어인 C로 구성되어 있어서 이식성이 높음
2) 구성
- 커널(Kernel): 가장 핵심적인 부분, 프로세스 관리, 메모리 관리, 파일 관리, 입출력 관리 등의 기능 수행
- 쉘(Shell): 사용자가 지정한 명령들을 해석하여 커널로 전달하는 명령어 해석기, 인터페이스 담당
- 유틸리티(Utility): 사용자의 편의를 위한 프로그램, 편집기, 컴파일러, 인터프리터 등
12. OSI 7계층과 오류 제어 방식
1) OSI(Open Systems Interconnection) 참조 모델
- 컴퓨터 네트워크에서 여러 시스템이 데이터를 주고 받고 서로 연동할 수 있는 표준화된 인터페이스를 제공하기 위해 프로토콜을 기능별로 나눈 것
- 목적: 시스템 간의 통신을 위한 표준 제공
2) Layer 1: 물리 계층(Physical Layer)
- 물리적인 장치와 인터페이스가 전송을 위해 필요한 기계적, 전기적, 기능적, 절차적 기능을 정의하는 계층
- 종류: RS-232C, V.24, X.21
3) Layer 2: 데이터 링크 계층(Data Link Layer)
- 인접한 두 개의 통신 시스템 간에 신뢰성 있는 효율적인 데이터를 전송하는 계층
- 링크의 설정과 유지 및 종료를 담당, 링크의 효율성을 향상
- 전송 데이터의 흐름 제어, 프레임 동기, 오류 제어 등을 수행
- 종류: HDLC, PPP, LLC, LAPB, LAPD, ADCCP
4) Layer 3: 네트워크 계층(Network Layer)
- 통신망을 통하여 패킷을 목적지까지 전달하는 계층
- 경로 설정 및 네트워크 연결 관리 수행
- 과도한 패킷 유입에 대한 폭주 제어 기능
- 종류: X.25, IP, ICMP, IGMP
5) Layer 4: 전송 계층(Transport Layer)
- 통신 종단 간(End-to-End) 신뢰성 있고 효율적인 데이터를 전송하는 계층
- 투명한 데이터 전송을 제공, 에러 제어 및 흐름 제어를 담당
- 종류: TCP, UDP
6) Layer 5: 세션 계층(Session Layer)
- 프로세스 간에 대한 연결을 확립, 관리, 단절시키는 수단 제공
- 논리적 동기 제어, 긴급 데이터 전송, 통신 시스템 간의 회화 기능 등을 제공
7) Layer 6: 표현 계층(Presentation Layer)
- 응용 간의 대화 제어(Dialogue Control)를 담당, 응용 계층과 세션 계층 사이에서 데이터 변환을 담당
- 정보의 형식 설정, 암호화, 데이터 압축, 코드 변환, 문맥 관리 등의 기능 수행
8) Layer 7: 응용 계층(Application Layer)
- 사용자에게 서비스 제공
- 응용 프로세스와 직접 관계하여 일반적인 응용 서비스 수행
- 종류: HTTP, FTP, SMTP, Telnet, DNS
9) 자동 반복 요청(ARQ, Automatic Repeat reQuest)
- 통신 경로에서 오류 발생 시 수신측은 오류의 발생을 송신측에 통보하고, 송신측은 오류가 발생한 프레임을 재전송하는 오류 제어 방식
13. TCP/IP 프로토콜
1) TCP/IP
- 인터넷에 연결된 서로 다른 기종의 컴퓨터 간에 데이터 송수신이 가능하도록 도와주는 표준 프로토콜
- 접속형 서비스, 전이중 전송 서비스, 신뢰성 서비스 제공
- 네트워크 환경에 따라 여러 개의 프로토콜을 허용
2) TCP(Transmission Control Protocol)
- OSI 7계층의 전송 계층 역할 수행
- 서비스 처리를 위해 Multiplexing과 De-Multiplexing 이용
- 전이중 서비스와 스트림 데이터 서비스 제공
3) IP(Internet Protocol)
- OSI 7계층의 네트워크 계층에 해당
- 비신뢰성 서비스 제공
- 신뢰성이 부족한 비연결형 서비스를 제공하기 때문에 상위 프로토콜에서 이러한 단점을 보완해야 함
4) IP 프로토콜에서 사용하는 필드
- Header Length(4bit): IP 헤더 뒷부분에 옵션 필드가 여럿 붙을 수 있어 길이는 가변적
- Total Packet Length(16bit): 전체 패킷의 길이를 바이트 단위로 표시 길이는 헤더와 데이터를 더한 것, 최대값은 65535
- Time To Live(8bit): 패킷을 전달할 수 있는 횟수 제한을 나타냄
5) 링크 계층(Link Layer)
- 프레임을 송수신
- 종류: Ethernet, IEEE 802, HDLC, X.25, RS-232C 등
6) 인터넷 계층(Internet Layer)
- 주소 지정, 경로 설정 제공, 네트워크 계층이라고도 함
- 종류: IP(데이터 체크섬은 제공하지 않고 헤더 체크섬만 제공), ICMP(수신지 도달 불가 메시지는 수신지 또는 서비스에 도달할 수 없는 호스트를 토지하는 데 사용), IGMP, ARP, RARP
7) 전송 계층(Transport Layer)
- 호스트 간 신뢰성 있는 통신 제공
- 종류: TCP(신뢰성 있는 연결 지항형 전달 서비스 제공), UDP(비연결형 및 비신뢰성 전송 서비스 제공)
8) 응용 계층(Application Layer)
- 응용 프로그램 간의 데이터 송수신 제공
- 종류: FTP, SMTP, SNMP, Telnet 등
14. IP 주소
1) IPv4(Internet Protocol version 4)
- 32비트 길이의 IP 주소
- 주소의 각 부분을 8비트씩 4개로 나눠서 10진수로 표현
- IP 주소 = 네트워크 주소(Netid) + 호스트 주소(Hostid)
2) 서브넷 마스크(Subnet Mask)
- 네트워크를 작은 내부 네트워크로 분리하여 효율적으로 네트워크를 관리하기 위한 수단
- 32bit 값으로 IP 주소를 네트워크와 호스트 IP 주소를 구분하는 역할
- 네트워크 ID에 해당하는 모든 비트를 1로 설정하며 호스트 ID에 해당하는 모든 비트를 0으로 설정
- CIDR 표기 형식: 10진수의 IP/네트워크 ID의 1비트의 개수
3) IPv6
- IPv4의 주소 부족 문제를 해결하기 위하여 개발됨
- 128비트 길이의 IP 주소
- 16비트씩 8개의 필드로 분리 표기
- 장점: 보안성 강화, 네트워트 기능 확장 용이, 패킷 크기 제한 없음, 멀티미디어 실시간 처리 가능, 자동으로 네트워크 환경 구성 가능
- 통신 방식: 유니캐스트(1:1), 애니캐스트(1: 가장 가까운 1), 멀티캐스트(1:N)
4) CSMA/CA
- 무선 랜에서 데이터 전송 시, 매체가 비어있음을 확인한 뒤 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방법
- 네트워크에 데이터의 전송이 없는 경우라도 동시 전송에 의한 충돌에 대비하여 확인 신호 전송
5) CSMA/CD
- 전송 중에 충돌이 감지되면 패킷의 전송을 즉시 중단하고 충돌이 발생한 사실을 모든 스테이션들이 알 수 있도록 간단한 통보 신호 전송
- 스테이션의 수가 만항지면 충돌이 많아져서 효율이 떨어짐
- 어느 한 기기에 고장이 발생하여도 다른 기기의 통신에 전혀 미치지 않음