가상 메모리
- 실행중인 프로세스에 의해 조회되는 주소를 가상 주소라 하고, 주기억장치에서 이용 가능한 주소를 실 주소라 한다.
- 프로그래머나 사용자들이 디스크의 커다란 메모리 공간을 가상메모리로 인식하고 이를 이용하여 메모리의 부족함 없이 다중 프로그래밍 환경을 실현하는 기법이다
- 공간이 없어도 부분적 적재가 가능하여 많은 작업을 실행시킬 수 있으므로 프로세서의 이용률과 처리율은 향상될 수 있다
- 응답 시간은 느려진다
- 물리적 주소 공간과 논리적 주소 공간으로 분리한다 -> 매핑 과정이 필요하다 (맵 테이블)
- TLB는 가상메모리를 효과적으로 제공하기 위한 장치이다
- 동적 주소 변환이란 프로세스 실행 중 가상 주소를 실주소로 변환하는 것이다
- 프로그램의 크기는 주기억장치 용량보다 커도 실행할 수 있다
- 프로세스에서 사용되는 가상주소의 순서와 주기억장치의 물리주소 순서는 일치하지 않아도 된다. 이를 인위적 연속성이라고 한다
페이지
- 가상메모리의 분할 단위로 블록 크기가 일정하면 페이지(고정), 블록 크기가 다르면 세그먼트(가변)라고 한다
- 외부 단편화가 발생하지 않는다
- 페이지 크기를 작게 설계하여 내부 단편화를 줄일 수 있다 (페이지 크기가 커질수록 내부 단편화 문제가 커진다)
- 페이징 과정에서 프레임이 필요 이상 할당되면 스래싱이 덜 발생한다.
- 페이지 사상으로 비용이 증가하고 수행속도가 감소한다
- 페이지는 프로그램에 상응하는 논리적 의미를 갖지 못한다
- 페이지 크기가 작아지면 페이지 테이블의 크기는 커진다
- 페이지 크기가 커지면 불필요한 데이터들이 주기억장치에 적재될 확률이 높아진다
- 일반적으로 페이지와 페이지 프레임의 크기는 같다
세그먼테이션
- 기억장치 할당은 최초, 최적, 최악 적합 기법을 사용하여 해결하는 동적 기억장치 할당방법을 사용한다
- 외부 단편화가 발생하고 내부 단편화는 발생하지 않는다
- 세그먼트 공유와 보호 측면에서 세그먼트는 페이지시스템보다 수행방법이 쉽고 명확하다
- 내용에 따라 구분되므로 크기에 대한 제한은 없다
- 세그먼트 번호와 변위(offset)로 구성하는 가상주소를 만든다
메모리 부족 시의 페이지 교체 기법
- LRU 기법은 메모리에 적재된 페이지 중 가장 오랫동안 참조되지 않았던 페이지를 교체하는 기법이다. 참조페이지를 주목하여 거리가 가장 먼 것을 교체한다!
- LRU 스택은 아래에서부터 쌓고 넣을때는 TOP, 제거할때는 BOTTOM
- FIFO 기법은 주기억장치에 가장 먼저 적재된 페이지(가장 오래된 페이지)를 교체 대상으로 선택하며 물리적 페이지의 개수를 확장했음에도 페이지 폴트가 늘어가는 경우가 발생하기도 한다.
- LFU는 참조된 횟수가 가장 적은 페이지를 교체 대상으로 선택하며 참조 페이지 앞을 보고 가장 적은 횟수를 교체한다
- OPT는 최적의 페이지 교체 기법으로 참조 페이지의 뒤를 보고 가장 횟수가 적은 것을 교체
페이지 교체 따로 정리하기
지역성, 스래싱(thrashing)
- 프로세스가 자주 참조하는 페이지의 집합을 워킹셋(working set)이라고 한다 (참조 지역성) 운영체제가 항상 시간이 변함에 따라 최신의 값으로 유지한다
- 프로세스를 실행하는 동안 일부 페이지만 집중적으로 참조하는 경우를 지역성이라 하며, 배열 순회는 공간 지역성의 예이다
- 스래싱이란 페이지 부재가 너무 자주 일어나서 프로세스가 실행에 보내는 시간보다 페이지 교체에 더 많은 시간을 소비하는 현상이다 -> 다중 프로그래밍 정도를 낮춘다, 지역성이나 우선순위 교환 알고리즘을 사용한다, 프로세스들이 가질 수 있는 페이지 프레임 수를 늘린다, 프로세스들에 할당되는 페이지 프레임 크기를 늘린다
- 다중 프로그래밍 정도가 높은 경우, 프로세스가 프로그램 수행시간보다 페이지 교환시간에 더 많은 시간을 소요하고 있다면 스래싱 현상이 발생한 것이다
디스크 스케줄링
- 탐색시간 최적화 기법이다
- FCFS : 공정성 보장, 헤드 이동거리에 비해 처리량 적다. 공평성이 유지 되지만 스케줄링 중 가장 성능이 좋지 않다
- SSTF : 무조건 가까운 트랙으로 이동하여 헤드이동거리 적고 처리량 많다. 평균 응답시간 적다. 응답시간 편차가 많이 발생하여 일괄처리용으로 사용한다. 기아상태 발생한다
- SCAN : 디스크 헤드가 양쪽을 계속 왕복하면서 가까운 요청을 모두 처리하는 방식이다. 이동 방향 상의 가까운 트랙으로 이동하여 헤드이동거리 적고 처리량 많다. 평균 응답시간 적다. 응답시간 편차가 적거나 기아상태를 해결할 수 있다.
- C-SCAN : 바깥쪽에서 안쪽으로 이동할 때만 트랙을 처리한다 (진행 방향이 같다) 기아 상태를 해결한다.
- LOOK, C-LOOK : 요구되지 않은 가장 바깥쪽 트랙 0번과 안쪽은 포함하지 않는다 / 마지막 트랙까지 이동 X
ex) 트랙 번호가 0부터 199인 200개의 트랙을 가진 디스크가 있다. 디스크 스케줄링 기법 중 C-SCAN을 사용하여 다음과 같은 작업 대기 큐(디스크 큐)의 작업을 처리하고자 하는 경우, 처리되는 트랙의 순서를 바르게 나열한 것은? (단 현재 디스크 헤드는 트랙 35에서 47로 이동해왔다고 가정한다) |
작업 대기 큐 : 139, 22, 175, 86, 13, 158 헤드 시작 위치 : 47 |
SSTF 방식 : 47 -> 22 -> 13 -> 86 -> 139 -> 158 -> 175 |
SCAN 방식 : 47 -> 86 -> 139 -> 158 -> 175 -> 199 -> 22 -> 13 (바로 전으로 왕복) |
C-SCAN 방식 : 47 -> 86 -> 139 -> 158 -> 175 -> 199 -> 0 -> 13 -> 22 (0을 방문함) |
LOOK 방식 : 47 -> 86 -> 139 -> 158 -> 175 -> 22 -> 13 (끝을 방문하지 않음) |
디스크 할당 기법
(1)연속 할당
- 파일들이 디스크의 연속적인 주소들의 집합에 할당되는 방식이다
- 연속된 공간에 바로 저장한다. 따라서 접근 시간이 빠르고 단순하며 관리가 용이하다
디스크 탐색 횟수는 최소화 될 수 있다 - 파일 크기에 맞는 공간이 없으면 만들 수가 없다 (새로운 파일을 위해 빈 공간을 찾는 갓이 어렵다)
- 단편화가 발생한다 -> 주기적 압축 필요
(2)연결 할당
- 연속 할당의 외부 단편화 문제를 해결하였다(포인터를 사용한다)
- 각 파일들이 디스크 블록들의 리스트에 연결되는데, 디스크 블록과 포인터들은 디스크 전체에 분산되어 있다
- 디렉터리는 파일의 첫번째와 마지막 블록의 포인터를 가지고 있다
- 포인터를 위한 기억 공간이 필요하다
- 검색에 긴 시간이 소요된다
- 직접 접근(액세스)는 불가능하다
(3)인덱스 할당
- 연결 할당의 직접 액세스를 지원할 수 없는 문제를 해결하였다
- 모든 포인터들을 하나의 장소, 즉 인덱스 블록으로 관리하여 직접 액세스를 지원한다
- 불연속 할당 방식은 연결할당,인덱스 할당에 해당하며 파일 검색 시간은 느리다
유닉스 운영체제
상당부분 c언어를 사용하여 작성하여 이식성이 뛰어나다
대화형 시스템, 분산처리방식 지원
다중사용자 시스템, 다중 작업용 시스템
높은 이식성과 확장성 제공
계층적 트리 파일 시스템
사용자 프로그램은 시스템 호출을 통해 커널 기능을 사용할 수 있다
- 커널(kernel) : 운영체제의 핵심으로 메모리에 상주하면서 프로세스 관리, 스케줄링, 입출력 관리, 메모리 관리, 파일 시스템 관리, 장치 관리 등 컴퓨터의 모든 자원을 초기화하고 제어하는 기능을 한다
- 쉘(shell) : 사용자와 커널 사이의 중간자 역할을 담당하는 프로그램으로 명령어 관리 기능을 수행하며 사용자가 입력한 명령을 해석하여 커널에 넘겨준다
파일 시스템에는 디렉터리 파일, 일반 파일, 장치 파일이 있다
이 모든 파일은 하나의 트리 구조를 가지며 계층적으로 관리한다
디스크 블록 구조
- 부트 블록 : 파일 시스템의 첫번째 블록으로 시스템을 실행하는 프로그램 및 정보를 저장한다. 파일 시스템에 유닉스 커널을 적재시키는 프로그램을 포함한다
- 슈퍼 블록 : 전체 파일 시스템에 대한 정보를 저장한다(전체 블록의 수, 블록의 크기, 사용 중인 블록의 수 등 파일 시스템의 정보를 가지고 있다), 사용 가능한 디스크 블록의 개수와 i node 개수를 알 수 있다
- I-노드 블록 : 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있다 (파일의 소유자, 유형, 접근권한, 접근시간, 크기, 링크수, 저장된 블록의 주소 등)
- 데이터 블록 : 일반 파일이나 디렉터리 파일의 내용이 들어있다
파일보호
- 소유자/그룹/기타
- rwx(읽기/쓰기/실행)
- 7이면 111(2) = 읽기 쓰기 실행 권한이 모두 있다
- 순서 -> 파일의 종류/소유자/그룹/기타사용자권한/하드링크수/소유자이름/그룹이름/파일크기/변경날짜/변경시간/파일이름
- - rwx rw- r-- 1 moon alcon 777 7월7일4시26분 kkk
- | rwxrw-r-- | 1 | moon | alcon | 777 | 7월7일4시26분 | kkk |
일반 파일 | 권한 | 하드링크 수 | 소유자 | 소유자 그룹 | 파일크기 | 최종 변경 시간 | 파일 이름 |
파일의 소유자는 읽고 쓰고 실행할 수 있지만 파일의 소유자를 제외한 사용자는 실행만 할 수 있다 = 711
rwx | --x | --x |
111 | 001 | 001 |
소유자 | 그룹 | 나머지 |
윈도우/리눅스 명령어 출처 https://bbaek-gwi-story.tistory.com/17
명령어 설명 | Windows | Linux |
파일복사 | copy | cp |
파일 이동 | move | mv |
파일 목록보기 | dir | ls |
파일 삭제 | del, erase | rm |
이름 변경 | move | mv |
디렉토리 이동 | cd | cd |
현재 디렉토리 | cd | pwd |
화면 정리 | cls | clear |
명령어 해석기 | command.com | sh, csh, bash |
파일 내용 표시 | type | cat |
도움말, 메뉴얼 | help | man |
종료 | exit | exit |
시간 표시 | time | date |
환경변수 표시 | set | set, env |
버전 정보 | ver | uname -a |
사용자 정보 출력 | finger | finger |
ping | ping | ping |
라우팅 테이블 | route print | route -n |
네임서버 쿼리 | nslookup | nslookup |
telnet | telnet | telnet |
ftp | ftp | ftp |
파일 문자열 찾기 | find | find |
2개 파일 비교 | fc, comp | diff |
라인 에디터 | edlin | ed |
문자열, 라인별 정력 | sort | sort |
하위 디렉토리 복사 | xcopy | cp -r |
파일 속성 표시 | attrib | lsattr |
현재경로 저장 후 이동 | pushd | pushd |
파일 감추기 | ATTRIB +h or -h | mv file .file |
압축 | pkzip | tar, zip |
프로세스 정보 | taskmgr | ps, top |
호스트 명 | hostname | hostname |
프로세스 종료 | tskill | kill, killall |
시스템 종료 | shutdown | shutdown, halt, init 0 |
ip표시 | ipconfig | ifconfig |
디스크 검사 | chkdsk | fsck |
free memory보기 | mem | free, top |
파일 인쇄 | lpr |
Windows 기본명령어
- DIR : 현재 디렉터리의 파일 목록을 표시함
- COPY : 파일을 복사함
- DEL : 파일을 삭제함
- TYPE : 파일의 내용을 표시함
- REN : 파일의 이름을 변경함
- MD : 디렉터리를 생성함
- CD : 동일한 드라이브에서 디렉터리의 위치를 변경함
- CLS : 화면의 내용을 지움
- ATTRIB : 파일의 속성을 변경함
- FIND : 파일에서 문자열을 찾음
- CHKDSK : 디스크 상태를 점검함
- FORMAT : 디스크 포면을 트랙과 섹터로 나누어 초기화함
- MOVE : 파일을 이동함
UNIX/LINUX 기본 명령어
- cat : 파일 내용을 화면에 표시함
- cd : 디렉터리의 위치를 변경함
- chmod : 파일의 보호 모드를 설정하여 파일의 사용 허가를 지정함
- chown : 파일 소유자와 그룹을 변경함
- cp : 파일을 복사함
- rm : 파일을 삭제함
- find : 파일을 찾음
- fsck : 파일 시스템을 검사하고 보수함
- kill : PID(프로세스 고유 번호)를 이용하여 프로세스를 종료함
- fork : 새로운 프로세스를 생성함
- killall : 프로세스의 이름을 이용하여 프로세스를 종료함
- ls : 현재 디렉터리의 파일 목록을 표시함
- mkdir : 디렉터리를 생성함
- rmdir : 디렉터리를 삭제함
- mv : 파일을 이동함
- ps : 현재 실행중인 프로세스를 표시함
- pwd : 현재 작업중인 디렉터리 경로를 화면에 표시함
- top : 시스템의 프로세스와 메모리 사용 현황을 표시함
- who : 현재 시스템에 접속해 있는 사용자를 표시함
'컴퓨터 일반 > 운영체제론' 카테고리의 다른 글
페이지 교체 알고리즘 문제 (0) | 2024.10.18 |
---|---|
운영체제론 복습(1) (2) | 2024.10.17 |