운영체제(OS; Operating System)
- 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
운영체제의 목적
- 처리 능력(Throughput)
- 반환 시간(Turn Around Time)
- 사용 가능도(Availability)
- 신뢰도(Reliability)
운영체제의 종류
Windows
- 1990년대 마이크로소프트(Microsoft) 사가 개발한 운영체제
Windows의 주요 특징
- 그래픽 사용자 인터페이스(GUI; Graphic User Interface)
- 선점형 멀티태스킹(Preemptive Multi-Tasking)
- PnP(Plug and Play, 자동 감지 기능)
- OLE(Object Linking and Embedding)
- 255자의 긴 파일명
- Single-User 시스템
UNIX
- AT&T 벨(Bell) 연구소, MIT, General Electric이 공동 개발한 운영체제
UNIX 시스템의 구성
커널(Kernel)
- 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당
쉘(Shell)
- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
유틸리티 프로그램(Utility Program)
- 일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용
LINUX
- 리누스 토발즈가 UNIX를 기반으로 개발한 운영체제
MacOS
- 애플 사가 UNIX를 기반으로 개발한 운영체제
Android
- 구글 사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제
iOS
- 애플 사에서 개발한 유닉스 기반의 모바일 운영체제
기억장치 관리
기억장치의 관리 전략
- 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것
종류
- 반입(Fetch) 전략
- 배치(Placement) 전략
- 교체(Replacement) 전략
반입(Fetch) 전략
- 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정
- 기법으로는 요구 반입(Demand Fetch), 예상 반입(Anticipatory Fetch)이 있다.
배치(Placement) 전략
-
프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정
-
기법으로는 최초 적합(First Fit), 최적 적합(Best Fit), 최악 적합(Worst Fit)이 있다.
교체(Replacement) 전략
- 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정
- 종류: FIFO, OPT, LRU, LFU, NUR, SCR 등
주기억장치 할당 기법
주기억장치 할당 기법의 분류
연속 할당 기법
- 프로그램을 주기억장치에 연속으로 할당
- 종류: 단일 분할 할당 기법, 다중 분할 할당 기법
분산 할당 기법
- 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당
- 종류: 페이징 기법, 세그먼테이션 기법
단일 분할 할당 기법
- 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
- 종류로는 오버레이 기법, 스와핑 기법이 있다.
오버레이(Overlay) 기법
- 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
스와핑(Swapping) 기법
- 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
다중 분할 할당 기법
고정 분할 할당 기법 = 정적 할당 기법
- 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법
가변 분할 할당 기법 = 동적 할당 기법
- 주기억장치를 미리 분할해 놓지 않고 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법
가상기억장치 구현 기법
- 보조기억장치의 일부를 주기억장치처럼 사용하는 것
- 가상기억장치의 일반적인 구현 방법: 페이징 기법, 세그먼테이션 기법
페이징(Paging) 기법
- 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치의 영역에 적재시켜 실행
세그먼테이션(Segmentation) 기법
- 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행
페이지 교체 알고리즘
-
페이지 부재(Page Fault)가 발생하면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정
-
종류: OPT, FIFO, LRU, LFU, NUR, SCR 등
OPT(OPTimal replacement, 최적 교체)
- 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체
FIFO(First In First Out)
- 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체
LRU(Least Recently Used)
- 최근에 가장 오랫동안 사용하지 않은 페이지를 교체
LFU(Least Frequently Used)
NUR(Not Used Recently)
SCR(Second Chance Replacement)
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지
가상기억장치 기타 관리 사항
페이지 크기
- 페이지 크기가 작을 경우: 페이지 단편화가 감소
- 페이지 크기가 클 경우: 디스크 접근 횟수가 줄어들어 전체적인 입-출력의 효율성이 증가
Locality
- 프로세스가 실행되는 동안 주기억장치를 참조할 떄 일부 페이지만 집중적으로 참조하는 성질
시간 구역성(Temporal Locality)
- 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
공간 구역성(Spatial Locality)
- 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상
워킹 셋(Working Set)
- 일정 시간 동안 자주 참조하는 페이지들의 집합
스래싱(Thrashing)
- 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
프로세스(Process)
PCB(Process Control Block, 프로세스 제어 블록)
- 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
프로세스 상태 전이
제출(Submit)
- 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
접수(Hold)
- 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
준비(Ready)
- 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
실행(Run)
- 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
대기(Wait), 블록(Block)
- 프로세스에 입출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 대까지 대기하고 있는 상태
종료(Terminated, Exit)
- 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태
실행(Run)에서 준비(Ready)로 바뀌는 경우
프로세스 상태 전이 관련 용어
Dispatch
- 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세스를 할당받아 실행 상태로 전이
Wake Up
- 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Spooling
- 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
교통량 제어기(Traffic Controller)
스레드(Thread)
- 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
스케줄링(Scheduling)
- 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
스케줄링의 종류
장기 스케줄링
- 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
중기 스케줄링
- 어떤 프로세스들이 CPU를 할당받을 것인지 결정
단기 스케줄링
- CPU를 할당받는 시기와 특정 프로세스를 지정
비선점(Non-Preemtive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법
- 종류: FCFS, SJF, 우선순위, HRN, 기한부 등
선점(Preemptive) 스케줄링
- 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법
주요 스케줄링 알고리즘
FCFS(First Come First Service, 선입 선출) = FIFO(First In First Out)
- 준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법
SJF(Shortest Job First, 단기 작업 우선)
- 준비상태 큐에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 기법
HRN(Highest Response-ratio Next)
우선순위 계산식 = (대기시간 + 서비스 시간) / 서비스시간
환경 변수(Environment Variable)
- 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임
Windows의 주요 환경 변수
- Windows에서 set을 입력하면 모든 환경 변수와 값을 출력
%ALLUSERSPROFILE%
%APPDATA%
%COMSPEC%
%HOMEDRIVE%
%HOMEPATH%
%LOGONSERVER%
%PATH%
%PATHEXT%
- cmd에서 실행할 수 있는 파일의 확장자 목록
%PROGRAMFILES%
%SYSTEMDRIVE%
%SYSTEMROOT%
%TEMP% 또는 %TMP%
%USERDOMAIN%
%USERNAME%
%USERPROFILE%
UNIX / LINUX의 주요 환경 변수
- UNIX나 LINUX에서는 set, env, printenv, setenv 중 하나를 입력하면 모든 환경 변수와 값을 표시
$DISPLAY
$HOME
$LANG
$MAIL
$PATH
$PS1
$PWD
$TERM
$USER
운영체제 기본 명령어
Windows 기본 명령어
DIR
DIR의 옵션
- /p: 목록을 한 화면 단위로 표시
- /w: 목록을 가로로 나열하여 표시
- /s: 하위 디렉터리의 정보까지 표시
- /a: 지정한 속성이 설정된 파일 목록 표시
COPY
DEL
TYPE
REN
MD
CD
CLS
ATTRIB
- 파일의 속성을 변경함
- 속성을 지정할 때는 속성 앞에 +를, 해제할 때는 속성 앞에 -를 입력한다,
속성의 종류
- r: 읽기 전용 속성
- a: 저장/백업 속성
- s: 시스템 파일 속성
- h: 숨김 파일
ATTRIB 예시
// abc.txt의 파일 속성을 읽기 전용으로 변경
attrib +r abc.txt
FIND
find "123" abc.txt
CHKDSK
MOVE
UNIX / LINUX 기본 명령어
cat
cd
chmod
- 파일의 보호 모드를 설정하여 파일의 사용 허가를 지정함
사용자
- u: user(소유자)
- g: group(그룹)
- o: other(다른 사용자)
- a: all(모두)
설정기호
- +: 권한 추가
- -: 권한 삭제
- =: 권한 부여
권한
- r: read(읽기)
- w: write(쓰기)
- x: execute(실행)
chmod의 사용 예시(일반적)
// user에게 abc.txt 파일의 읽기, 쓰기, 실행 권한을 부여
chmod u=rwx abc.txt
chmod의 사용 예시(8진법)
- 소유자-그룹-기타 사용자 순으로 권한을 의미함
- 소유자가 rwx, 그룹이 rwx, 기타 사용자가 rx만 갖고 있다면 이를 8진법 숫자로 나타내면 775
chmod 775 batch.sh
chown
cp
rm
find
fsck
kill
- PID(프로세스 고유 번호)를 이용하여 프로세스를 종료함
// PID가 1234이 프로세스를 종료
kill 1234
fork
killall
// 프로세스의 이름이 gilbut인 모든 프로세스를 종료
killall gilbut
ls
mkdir
rmdir
mv
ps
pwd
top
who