기억장치
데이터, 프로그램 연산의 중간 결과 등을 일시적 또는 영구적으로 저장하는 장치
기억장치의 종류
1) 레지스터
중앙처리장치(CPU) 내부에 위치
2) 캐시 메모리
CPU와 주기억장치 사이의 속도 격차를 줄이기 위해 사용
3) 주기억장치
CPU 직접 접근하여 데이터를 읽고 쓸 수 있는 장치
4) 연관 메모리
기억된 내용의 일부를 이용하여 Access할 수 있는 기억장치
5) 보조기억장치
주기억장치에 비해 접근 시간은 느리지만, 기억 용량이 크다.
6)SSD
기계적인 움직임이 없는 반도체 기반의 기억 장치
시스템 소프트웨어
시스템 소프트웨어는 응용 소프트웨어를 실행하기 위한 플랫폼 제공
종류
- 로더: 프로그램을 메모리에 적재
- 링커: 목적 파일을 실행 파일로 변환
- 유틸리티: 하드웨어, 운영체제, 응용 소프트웨어 관리를 지원
- 번역기: 프로그래밍 언어를 다른 언어로 변환
- 장치 드라이버: 특정 하드웨어나 장치를 제어
- 운영체제: 하드웨어 관리와 통신 등 다양한 기능을 제공
시스템 소프트웨어의 구성
1) 제어 프로그램
- 감시 프로그램: 프로그램 실행과 시스템 상태를 감시/감독
- 작업관리 프로그램 : 스케줄 관리 및 시스템 자원 할당을 담당
- 데이터 관리 프로그램: 데이터 전송 및 파일 조작을 관리
운영체제
1) 윈도우(Windows)
- 마이크로소프트사에서 개발한 운영체제로, MS-DOS에 멀티태스킹 기능와 GUI 환경을 제공한다.
- GUI 제공, 선점형 멀티태스킹 방식, 자동감지 기능 제공, OLE
2) 리눅스(Liunx)
- 1991년 리누스 토발즈에 의해 개발된 오픈소스 유닉스 호환 운영체제
- 다중 사용자 시스템, 오픈 소스, 파일, 시스템(EXT), 이식성/유연성/확장성, 다양한 배포판
3) 유닉스(Uinx) [20년 3회]
- 1996년 미국 AT&T 벨연구소에서 켄 톰슨이 개발한 운영체제
- 시분할 시스템, 이식성, 다중 사용자 및 작업 지원, 네트워킹, 파일 시스템, 개발 용이성, 다양한 유틸리티 프로그램
3-1) 유닉스(Uinx) 시스템 구성
- 커널(Kernel) : UNIX의 가장 핵심적인 부분
- 쉘(Shell) : 명령어 해석기
- 유틸리티 프로그램 : 에디터, 컴파일러, 인터프리터, 디버거 등
3-2) Unix 파일 시스템
- Unix 파일 시스템의 구조
- 부트 블록: 부팅 시 필요한 코드가 저장
- 슈퍼 블록: 전체 파일 시스템에 대한 정보가
- I-node 블록 : 파일이나 디렉토리에 대한 모든 정보
- 데이터 블록 : 실제 파일 데이터가 저장
3-3) 파일 디스크립터(FD, File Descriptor)
- 유닉스 시스템에서 프로세스가 파일에 접근할 때 사용
3-4) POSIX(Portable Operating System Interface)
4) MacOS
애플(Apple Inc.)개발한 유닉스 기반의 운영체제
운영체제별 파일 시스템
컴퓨터 시스템에서 데이터를 저장하고 검색하는 방법을 정의하는 데 사용되는 구조와 규칙의 집합니다.
운영체제별 파일 시스템
- windows : NTFS, FAT32,
- macOS : APFS, HFS+
- Linux : EXt4, Btrfs
- UNIX : UFS
운영체제의 명령어
Unix 주요 명령어
파일 및 디렉터리 관련 명령어
-
ls: 디렉터리의 파일 목록을 표시합니다.
예: ls -l (상세 목록 표시)
-
cd: 디렉터리 변경
예: cd /path/to/directory
-
pwd: 현재 작업 중인 디렉터리의 경로를 표시합니다.
-
mkdir: 새 디렉터리를 생성합니다.
예: mkdir new_directory
-
rmdir: 빈 디렉터리를 삭제합니다.
-
rm: 파일 삭제
예: rm filename (파일 삭제), rm -r directory (디렉터리 및 내용 삭제)
-
cp: 파일 복사
예: cp source_file destination_file
-
mv: 파일 이동 또는 이름 변경
예: mv old_name new_name
파일 내용 관련 명령어
-
vi : 명령어 편집기
-
cat: 파일 내용을 출력합니다.
예: cat filename
-
more: 파일 내용을 페이지별로 출력합니다.
-
less: 파일 내용을 스크롤하며 출력합니다.
-
head: 파일의 처음 몇 줄을 출력합니다.
예: head filename
-
tail: 파일의 마지막 몇 줄을 출력합니다.
예: tail filename
시스템 관련 명령어
-
top: 현재 실행 중인 프로세스의 상태를 실시간으로 보여줍니다.
-
ps: 현재 실행 중인 프로세스 목록을 표시합니다.
예: ps aux
-
kill: 프로세스를 종료합니다.
예: kill PID (PID는 프로세스 ID)
-
fork : 프로세스 생성
-
exit : 프로세스 종료
-
df: 파일 시스템의 디스크 공간 사용량을 표시합니다.
-
du: 특정 디렉터리의 디스크 사용량을 표시합니다.
예: du -sh directory
-
getpid : 자신의 프로세스 정보
-
getppid : 부모 프로세스 ID
텍스트 처리 관련 명령어
권한 관련 명령어 (시험에 자주 나옴)
Linux, Uinx 파일 접근 권한 관리
- rwx : Owner
- rw- : Group
- r-- : Other


이미지 참조 - 슈고링
메모리 관리
기억장치 관리 전략
보조기억장치에 저장된 프로그램이나 데이터를 주기억장치에 언제, 어디에 적재할지를 결정하는 방법
기억장치 관리 전략
1) 반입(Fetch) 전략
- 언제 주기억장치로 적재할 것인지를 결정하는 전략
- 요구반임/예상반입
2) 배치(Placement)전략
- 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략
- 최초 적합(First Fit), 최적 접함(Best Fit), 최악 적합(Worst Fit)
3) 교체(Replacement)전략
- 새로운 프로그램이나 데이터를 위해 어떤 영역을 교체할지 결정하는 전략
- FLFO, OPT, LRU, LFU, NUR, SCR
주기억 장치 할당 기법
1) 단일 분할 할당 기법
- 경계 레지스터를 사용해 운영체제 영역과 사용자 영역을 구분한다.
- 오버레이(Overlay) : 필요한 조각만 순서대로 주기억장치에 적제
- 스와핑(Swapping) : 필요에 따라 다른 프로그램과 교체하는 기법
####2) 다중 분할 할당 기법
- 주기억장치를 여러 영역으로 나누어 프로그램을 할당한다.
- 고정 분할과 가변 분할 기법이 있다.
단편화
주기억장치에 프로그램 할당과 반남 과정에서 발생하는 빈 공각
단편화의 종류
단편화 해결 방법
- 통함(Coalescing) 기법 : 안전한 빈 분할 공간을 합침
- 압축(Compaction) 기법 : 분산된 여러 단편화된 공간을 합침
- 재배치 기법(Relocation) : 프로그램의 주소를 새롭게 지정해주는 기법
가상기억장치
보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 기법
블록 분할 방법
1) 페이징(Paging) 기법
- 가상기억장치를 모두 같은 크기의 블록(페이지)으로 편성하여 운용하는 기법
- 내부 단편화 발생
가상기억 장치 기타 관리사항
1) 페이지 부재
- 프로세스 실행 중 필요한 페이지가 주기억장치에 없는 상황
2) 지역성(Locality)
- 프로세스가 실행되는 동안 주기억장치에서 일부 페이지만 집중적으로 참조하는 성질
- 시간 구역성 : Loop(반복),Stack(스택), 부 프로그램(Sub Routine) 등
- 공간 구역성 : 배열순회, 순차적 코드 실행
3) 워킹 셋(Working Set)
- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
4) 스래싱(Thrashing)
- 프로세스 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
⭐페이지 교체 알고리즘⭐
1) FLFO(First In First Out)
가장 먼제 적재된 페이지를 교체
2) OPT(Optimal replacement, 최적 교체)
미래에 가장 오랫동안 사용되지 않을 페이지를 교체
1) LRU(Least Recently Used)
가장 오랜동안 사용되지 않을 페이지를 교체
1) LFU(Least Frequently Used)
사용 빈도가 가장 적은 페이지를 교체
1) NUR(Not Used Recently)
참조 비트와 변형 비트를 사용하여 최근 사용 여부를 확인
1) SCR(Second Chance Replacement)
FLFO 단점을 보완한 기법
프로세스
컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
⭐스레드(Thread)⭐
프로세스 내에서 실행되는 흐름의 단위, 사용자 수준의 스레드, 커널 수준의 스레드
메모리상의 프로세스 영역
- 코드 영역: 실행할 프로그램의 코드가 저장
- 데이터 영역 : 전역 변수와 정적 변수
- 스택 영역 : 지역 변수와 함수의 매개변수
- 힙 영역 : 동적 할당
⭐프로세스 상태 전이⭐

이미지 참조 - tomato, tomahto
PCB(Process Control Block, 프로세스 제어 블록)
PCB는 운영체제가 프로세스의 정보를 저장하는 공간
문맥 교환(Context Switching)
하나의 프로세스가 CPU 사용을 마치고 다른 프로세스가 CPU를 사용하도록 전환하는 과정
프로세스 스케줄링
메모리에 올라온 프로세스들 중 어느 프로세스를 먼저 처리할지 순서를 정하는 것이다.
스케줄링 목적
- 공평성
- 효율성
- 안전성
- 반응 시간 보장
- 무한 연기 방지
스케줄링 기법 [22년 3회]
1) 선점형 스케줄링(Preemptive)
운영체제가 실행 중인 프로세스부터 CPU를 강제로 빼앗을 수 있는 방식
- 종류: Round Robin, SRT, 다단계 큐(MLQ, Multi-Level Queue), 다단계 피드백 큐 (MFQ, Multi-Level Feedback, Queue)등
Fq
2) 비선점형 스케줄링(Non-preemptive)
프로세스가 CPU를 점유하고 있다면 이를 빼앗을 수 없는 방식
- 종류: FCFS, SJF(Short Jab First), HRN, 우선순위, 기한부 등
3) 기아현상과 에이징 기법
- 기아현상(Starvation) : 우선순위가 낮은 프로세스가 무한정 기다리는 현상
- 에이징 기법(Aging) : 기아현상을 해결하기 위한 기법
⭐스케줄링 알고리즘⭐
1) 선점형 기법
- Round Robin : 시간 단위를 정하여 순서대로 CPU에 할당
- SRT(Shorest Remaining Time) : 실행 시간이 가장 짧은 프로세스에 CPU 할당
- 다단계 큐(MLQ, Multi-Level Queue) : 그룹에 따라 다른 준비 상태 큐를 사용하는 기법
- 다단계 피드백 큐(MLFQ, Multi-Level Feedback Queue) : 가장 높은 우선순위의 준비 큐에 등록
2) 비 선점형 기법
- FCFS(First Come First Serve) : 먼저 도착한 프로세스를 먼저 처리
- SJF(Shortest Job First) : 실행 시간이 짧은 프로세스에게 CPU를 할당
- HRN(Highest Response ratio Next) : 우선순위 = (대기시간 + 실행시간) / 실행시간
[20년 1회 기출 ]
- 우선순위(Priority): 프로세스의 우선순위를 부여
- 기한부(Deadline) : 일정한 시간을 주어 그 시간 안에 작업을 완료하도록 하는 기법
병행 프로세스와 교착 상태
병행 프로세스
두 개 이상의 프로세스가 동시에 존재하여 실행 상태에 있는 것
문제점과 해결책
1) 문제점
- 동시에 여러 프로세스를 처리할 때 한정된 자원에 대한 사용 순서 등의 문제가 발생할 수 있다.
2) 문제 해결책
- 임계 구역: 한 번에 하나의 프로세스만이 접근할 수 있도록 지정된 지역
- 상호배제 기법: 공유 공간을 사용 중일 때 사용하지 못하도록 하는 제어 기법
- 동기화 기법: 하나의 자원에 대한 권한/순서를 조정해주는 기법
병행 프로세스 문제 해결책
1) 상호 배체(Mutual Exclusion)
- 상호 배제 기법
1) 데커의 알고리즘(Dekker's Algorithm)
2) 피터슨의 알고리즘(Peterson's Algorithm)
3) 다익스트라 알고리즘(Dijkstra Algorithm)
4) 램포트의 베이커리 알고리즘(Lamport's Bakery Algorithm)
2) 동기화 기법
- 세마포어(Semaphore)
프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
- 종류: 계수 세마포어, 이진 세마포어
2) 모니터(Monitor)
프로그래밍 언어 수준에서 동시성을 제어하는 상호 배제 기법
교착상태(Dead Lock)
상호 배제에 의해 나타나는 문제점으로, 여러 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스의 자원을 요구하며 무한정 기다리는 현상
⭐교착상태 발생 조건⭐
- 상호배제(Mutual Exclusion) : 한 번에 한 개의 프로세스만이 공유 자원을 사용
- 점유와 대기(Hold & Wait) : 자원을 점유하면서 다른 프로세스의 자원을 요구
- 비선점(Nonpreemption) : 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다.
- 환형대기(Circular Wait) : 순차적으로 다음 프로세스가 요구하는 자원을 가지고 있는 상태
교착상태 해결 방법
- 예방 기법(Prevention)
- 회피 기법(Avoidance) - 은행가 알고리즘
- 발견 기법(Detection)
- 회복 기법(Recovery)
디스크 스케줄링
하드 디스크에 저장된 데이터에 접근하기 위해 디스크 헤드의 움직임을 최적화하는 기법
디스크 스케줄링 종류
1) FCFS (Frist Come Fist Served)
2) Shortest Seek Time First(SSTF)
- 현재 헤드에서 가장 가까운 트랙의 요청을 처리
3)SCAN
- 헤드가 진행 방향에 있는 요청을 처리하고 반대 방향으로 틀어 반대방향의 요청들을 처리
4)C-SCAN
- 항상 한 반향에서 반대 방향으로 진행하며 트랙의 요청을 처리
5)LOOK
- SCAN 기법을 기초로 하며, 진행 방향의 마지막 요청을 처리한 후 반대 방향으로 처리
6)C-Look
- C-SCAN 기법을 기초로 하며, 한쪽 방향의 요청을 처리한 후 반대쪽 끝으로 이동 후 다시 한쪽 방향으로 처리
7) N-STEP SCAN
- SCAN 기법을 기초로 하며, 대기 중인 요청을 우선적으로 처리하고, 처리 과정 중 들어오는 요청은 이후 진행 시 처리
9) 에션바흐(Eschenbach)기법
- 부하가 큰 항공 예약 시스템을 위해 개발된 기법으로, 탐색 시간과 회전 지연 시간을 최적화하는 데 사용
환경변수와 로그 파일
환경변수
환경변수는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
UNIX/Linux 환경변수
- env, set, printenv, export
로그 파일
로그
시스템의 모든 기록을 담고 있는 데이터
리눅스 로그 종류
- messages: 일반적인 시스템 메시지 로그퍼알
- secure : 보안인증에 관한 메세지 로그파일
- sys: 시스템 전반의 로그를 기록.
- auth: 인증 관련 로그 (로그인 시도 등).
- kern: 커널 메시지 로그.
- dmesg: 부팅 시 하드웨어 관련 로그.
- boot: 부팅 과정 로그.
- cron: 크론 작업 관련 로그.
- maillog: 메일 서버 관련 로그.
- dlmesg : 부팅 시의 시스템 로그
- wtmp : 전체 로그인 기록
- utmp : 현재 로그인 사용자 기록
- lastlog : 최근 로그인 기록
- btmp : 로그인 실패 정보 기록
스토리지
데이터를 저장하는 저장소로서 컴퓨터 시스템의 부품
스토리지 종류
- DAS(Direct Attachted Storage):PC나 서버에 직접 연결
- NAS(Networt Attached Storage): LAN을 통해 서버와 연결
- SAN(Storage Area netWork): 파이버 채널 스위치를 통해 연결
RAID(Redundant Array of Inexpensice Disks)[22년1회 기출]
RAID
복수의 HDD를 하나의 드라이브로 인식하고 사용
RAID 구성
- 스트라이핑(Striping) : 연속된 데이터를 여러 디스크에 라운드로빈 방식으로 저장
- 미러링(Mirroring) : 데이터를 동일하게 복제해 신뢰성을 확보
RAID 형태
- RAID 0: 스트라이핑, 데이터 분산 저장 (성능 향상) - 데이터 복구 불가능.
- RAID 1: 미러링, 데이터 복제 저장 (안전성 향상) - 하나의 드라이브 고장 시 데이터 유지.
- RAID 2: 비트 레벨 스트라이핑, 오류 정정 코드 사용 헤밍코드 사용.
- RAID 3: 바이트 레벨 스트라이핑 + 전용 패리티 저장 드라이브 (고속 I/O 가능).
- RAID 4: 블록 레벨 스트라이핑 + 전용 패리티 드라이브 (단일 패리티 병목 현상).
- RAID 5: 블록 레벨 스트라이핑 + 두개의 분산 패리티 (안전성과 성능 균형).