[Sec 1. 시스템 소프트웨어]
- 시스템 소프트웨어의 구성
- 제어 프로그램 (감작데이) : 감시 프로그램, 작업 관리 프로그램, 데이터 관리 프로그램
- 처리 프로그램 : 서비스 프로그램, 문제 프로그램, 언어 번역 프로그램
[Sec 2. 운영체제]
- 기능 : 프로세스 관리, 메모리 관리, 파일 관리 등
- 운용 기법
- 일괄 처리 시스템(여러 작업 묶어서)
- 실시간 처리 시스템(즉시 수행)
- 다중 프로그래밍 시스템(하나의 CPU로 여러 프로그램)
- 시분할 시스템(정해진 시간동안)
- 다중 처리 시스템(여러 CPU, 병렬)
- 다중 모드 시스템(다양한 운용 기법 혼용)
- 분산 처리 시스템(여러 독립된 시스템 연결)
- 종류 : 윈도우(Windows), 리눅스(Linux), 유닉스(Unix), MacOS
- 유닉스 구성 : 사용자 > 쉘(명령어 해석) > 커널(실제 일처리, 핵심)
- 유닉스 파일 시스템
- 특징 : 트리 구조
- 구조 : 부트 블록(부팅 시), 슈퍼 블록(전체 정보), I-node 블록(저장 위치), 데이터 블록(실데이터)
- 파일 디스크립터(FD) : 유닉스 시스템에서 프로세스가 파일에 접근할 때 사용
- 리눅스, 유닉스 파일 접근 권한 관리
- Type(1) / Owner(3) / Group(3) / Other(3)
- R(4) : 읽기 권한 / W(2) : 쓰기 권한 / X(1) : 실행 권한 / -(0) : 권한 없음
- umask(접근 권한 마스크) : 새로 만들어질 파일에서 제거될 권한을 명시
- chown(소유주 변경)
[Sec 3. 메모리 관리]
- 기억장치 관리 전략
- 반입(Fetch) 전략 : 요구 반입(필요로 할 때), 예상 반입(사용 예상 시)
- 배치(Placement) 전략 : 최초 적합, 최적 적합(단편화 최소화), 최악 적합(단편화 최대화)
- 교체(Replacement) 전략 : FIFO, OPT, LRU, LFU, NUR, SCR 등
- 단편화
- 종류 : 내부 단편화(할당 후 남아있는 공간), 외부 단편화(할당되지 못해 남아있는 전체 공간)
- 해결 방법 : 통합 기법(인접한 공간 통합), 압축 기법(분산된 공간 통합), 재배치 기법(새로운 주소에 배치)
[Sec 4. 가상기억장치]
가상 기억 장치 : 보조기억장치의 일부를 주기억장치처럼 사용하는 기법
- 블록 분할 방법
- 페이징(Paging) 기법 : 가상기억장치를 모두 같은 크기의 블록으로 편성·운용
페이지 크기↑ → 기억장소 효율↓, 단편화↑, 입출력 시간↓, 맵테이블↓
페이지 크기↓ → 기억장소 효율↑, 단편화↓, 입출력 시간↑, 맵테이블↑ - 세그먼테이션(Segmentation) 기법 : 가상 메머리를 크기가 다른 세그먼트로 분할·할당
- 페이징(Paging) 기법 : 가상기억장치를 모두 같은 크기의 블록으로 편성·운용
- 페이지 교체 알고리즘
- FIFO(First In First Out) : 먼저 메모리에 적재된 페이지를 먼저 교체
- OPT(Optimal Replacement, 최적 교체) : 미래에 가장 오래 사용되지 않을 페이지 교체
- LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 페이지 교체
- LFU(Least Frequently Used) : 사용 빈도가 가장 적은 페이지 교체
- NUR(Not Used Recently) : 참조되지 않고 수정되지 않은 페이지를 우선적으로 교체
- SCR(Second Chance Replacement) : 가장 오래된 페이지 중에서도 자주 사용되는 페이지의 교체를 방지
[Sec 5. 프로세스]
- 프로세스 영역 : 코드 영역, 데이터 영역, 스택 영역, 힙 영역
- 프로세스 상태 전이

- 스레드 : 프로세스 내에서 실행되는 흐름의 단위, 경량 프로세스
- 각 스레드는 각자 스택 영역을 가지며, 부모 프로세스의 코드, 데이터, 힙 영역은 공유함
- 분류 : 사용자 수준의 스레드, 커널 수준의 스레드
- 문맥 교환(Context Switching) : 사용자 간 CPU 전환 과정
- PCB(Process Control Block) : 운영체제가 프로세스의 정보를 저장하는 공간
[Sec 6. 스케줄링]
스케줄링 : 메모리에 올라온 프로세스들 중 어느 프로세스를 먼저 처리할 지 순서를 정하는 것
- 선점형 스케줄링(Preemptive) : 운영체제가 실행 중인 프로세스로부터 CPU를 강제로 빼앗을 수 있는 방식
- Round Robin(RR) : 시간 단위를 정하여 프로세스에 순서대로 CPU 할당
- Shortest Remaining Time(SRT) : 남은 실행 시간이 가장 짧은 프로세스에 CPU 할당
- 다단계 큐(MLQ) : 프로세스를 특정 그룹으로 분류, 각 그룹에 다른 준비 상태 큐 사용
- 다단계 피드백 큐(MLFQ) : 우선순위 준비 큐 + FCFS 순서로 CPU 할당
- 비선점형 스케줄링(Non-Preemptive) : 프로세스가 CPU를 점유하고 있다면 이를 빼앗을 수 없는 방식
- First Come, First Service(FCFS) : 먼저 도착한 프로세스를 먼저 처리
- Shortest Job First(SJF) : 실행 시간이 가장 짧은 프로세스에 CPU 할당
- Highest Response Ratio Next(HRN) : 우선순위 = (대기시간+실행시간)/실행시간
- 우선순위(Priority) : 각 프로세스에 우선순위 부여, 높은 우선순위에 자원 할당
- 기한부(Deadline) : 프로세스에 일정한 시간을 주어 그 시간 안에 작업을 완료하도록
[Sec 7. 병행 프로세스와 교착상태]
병행 프로세스 : 두 개 이상의 프로세스가 동시에 존재하며 실행 상태에 있는 것
- 문제 해결책 : 임계구역, 상호배제 기법, 동기화 기법
- 임계구역(Critical Section) : 한 번에 하나의 프로세스만 접근할 수 있도록 지정된 영역
- 상호배제(Mutual Exclusion) : 사용 중일 때 다른 프로세스가 사용하지 못하도록 제어
종류 : 데커의 알고리즘, 피터슨의 알고리즘, 다익스트라 알고리즘, 램포트의 베이커리 알고리즘 - 동기화 기법 : 스레드의 순서를 조정해주는 기법
종류 : 세마포어(P, V), 모니터(프로그래밍 언어 수준에서 동시성 제어)
교착 상태 : 여러 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스의 자원을 요구하며 무한정 기다리는 현상
- 교착 상태 발생 조건 : 상호 배제, 점유와 대기, 비선점, 환형 대기
- 교착 상태 해결 방법 : 예방(Prevention) 기법, 회피(Avoidance) 기법, 발견(Detection) 기법, 회복(Recovery) 기법
(ex. 회피 기법 - 은행원 알고리즘)
[Sec 8. 디스크 스케줄링]
- 디스크 스케줄링 : 디스크 헤드의 움직임을 최적화하여 데이터를 빨리, 효율적으로 액세스하기 위함
- Fisrst Come First Served(FCFS) : 요청이 들어온 순서대로 처리
- Shortest Seek Time First(SSTF) : 현재 헤드에서 가장 가까운 트랙의 요청 먼저 처리
- SCAN : 헤드 진행 방향에 있는 요청 처리 후 반대 방향 요청 처리 (진행 중 요청 포함)
- C-SCAN : 항상 한 방향에서 반대 방향으로 진행하며 트랙의 요청 처리
- LOOK : SCAN 기법을 기초로, 진행 방향의 마지막 요청 처리 후 반대 방향으로 처리
- C-LOOK : C-SCAN 기법을 기초로, LOOK 기법과 동일
- N-STEP SCAN : SCAN 기법을 기초로, 진행 중 요청은 반대 방향으로 진행할 때 처리
- 에션바흐(Eschenbach) 기법 : 부하가 큰 시스템에 사용
[Sec 9. 환경변수, 로그, 쉘 스크립트]
- 환경변수 : 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
운영체제에서 프로세스를 생성할 때 참조하는 변수 - 로그 : 시스템의 모든 기록을 담고 있는 데이터
리눅스 로그 종류 : xferlog(ftp 로그파일), wtmp(전체 로그인 기록), utmp(현재 로그인 사용자 기록), btmp(로그인 실패 정보 기록) - 쉘 스크립트 : 쉘에게 무슨 명령들을 실행할 지 알려주는 스크립트 파일
입력은 read, 출력은 echo
'Data Analysis > 정보처리기사' 카테고리의 다른 글
| [4과목 프로그래밍 언어 활용] 04. 프로그래밍 언어 활용 (0) | 2024.04.20 |
|---|---|
| [4과목 프로그래밍 언어 활용] 03. 네트워크 기초 활용 (1) | 2024.04.19 |
| [4과목 프로그래밍 언어 활용] 01. 서버 프로그램 구현 (0) | 2024.04.19 |
| [3과목 데이터베이스 구축] 04. SQL 응용 (0) | 2024.04.19 |
| [3과목 데이터베이스 구축] 03. SQL 활용 (1) | 2024.04.19 |