Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

운영체제 기말고사 힌트 정리 본문

2-1/운영체제

운영체제 기말고사 힌트 정리

김브래 2023. 6. 5. 23:54

20문제이며, 각 문제번호 당 하기 사항에 대한 지문이 있습니다.

 

1. 공유메모리 관련 프로그래밍 기술

2. 메시지큐 관련 프로그래밍 기술

3 ~ 5. 연속메모리 할당(고정, 가변)

6. 가상기억장치 관리 전략

7. 디스크 구조 및 스케줄링에 따른 성능 분석, RAID 종류

8~11. 파일시스템 및 기록구조

12~13. 디렉토리 및 경로관련 사항

14~20. 파일 처리 함수


1. 공유메모리 관련 프로그래밍 기술


공유 메모리

개념

- Shared Memory
- 동일한 메모리공간을 서로 다른 프로세스들이 공유
- 운영체제를 통해 공간이 공유됨

사용(프로그래밍) 절차

1. 공유 메모리 생성
2. 프로세스에 공유 영역을 첨부
3. 공유 영역 접근
4. 첨부된 공유 영역을 해제
5. 공유 메모리 삭제

공유 메모리 생성 - shmget()

공유 메모리 생성 

 

인자
• key : 시스템에서 식별하기 위한 공유메모리 번호
• size: 공유메모리 크기
• shmflg: 동작 옵션
    – IPC_CREAT : 
        » key에 해당하는 공유메모리가 없으면 생성(단, 생성 시 접근 권한을 부여해야 함)
        » 동일 값이 이미 있으면, 무시됨
    – IPC_EXCL :
        » 공유메모리가 이미 있으면 실패 의미로 -1을 반환

 

반환값:
• 성공: 공유메모리 식별자
• 실패: -1

공유 메모리 접근 - shmat()

공유메모리를 프로세스 메모리에 첨부 (attach) 

인자:
• shmid : 공유메모리 식별자
• shmaddr : 공유메모리 주소(일반적으로 NULL을 사용)
• shmflg : 동작옵션


반환값
• 성공: 공유메모리 주소 포인터
• 실패: (void *)-1

공유 메모리 해제 - shmdt()

공유메모리를 프로세스 메모리로부터 분리(detach)

 

모두 분리되었다고 해서 공유메모리가 사라지지는않음

 

강제 소거를 위한 절차가 필요

 

반환값:
• 성공: 0
• 실패: -1

공유 메모리 수정 및 삭제 - shmctl()

생성된 공유메모리에 대하여 속성을 수정

 

공유메모리를 운영체제로부터 삭제

 

인자 :
• shmid : 공유메모리 ID
• cmd : 공유메모리 제어(삭제: IPC_RMID, 설정: IPC_SET)
• buf : 속성값 추출 및 설정(삭제 시 NULL)

 

반환값:
• 성공: 0
• 실패: -1


2. 메시지큐 관련 프로그래밍 기술


메시지 큐

개념

- Message Queue
- 운영체제가 큐를 관리
- 큐접근을 통한 서로 다른 프로세스들이 통신

송신 절차

1. 메시지 큐 생성
2. 생성된 큐에 메시지 송신

수신 절차

1. 메시지 큐 생성
2. 생성된 큐에 메시지 수신

메시지 큐를 접근하거나 생성 - msgget()

인자
• Key : 시스템에서 식별하기 위한 메시지 큐 번호
• msgflg: 동작 옵션
    – IPC_CREAT : 
        » key에 해당하는 IPC가 없으면 생성
          (단, 생성 시 접근 권한을 부여해야 함)
        » 동일 값이 이미 있으면, 무시됨
    – IPC_EXCL :
        » 동일 KEY 이미 있으면 실패 의미로 -1을 반환

 

반환값:
• 성공: 메시지 큐 식별자
• 실패: -1

메시지 송신 - msgsnd()

메시지 큐에 메시지를 전송함

 

전송할 메시지의 첫 4바이트는 메시지의 타입을 지정

 

인자:
• msgid : 메시지 큐 식별자
• msgp : 전송할 메시지
• msgsz : 메시지 크기
• msgflg : 동작옵션

 

반환값
• 성공: 0
• 실패: -1

메시지 수신 - msgrcv()

메시지 큐에 있는 메시지를 가져옴

 

인자:
• msgid : 메시지 큐 식별자
• msgp : 수신할 메시지
• msgsz : 메시지 크기
• msgtype : 메시지 구조체의 종류
• msgflg : 동작옵션

 

반환값
• 성공: 0
• 실패: -1


3 ~ 5. 연속메모리 할당(고정, 가변)


할당(Allocation)

- 연속 메모리 할당 방법(Contiguous Allocation)
- 비연속(분산) 메모리 할당 방법(Partition Allocation)

연속 메모리 할당(Contiguous Allocation) 

- 주 기억장치는 OS와 사용자 프로세스들에게 공간을 제공해야함


- 주 기억장치는 한정적이기 때문에 효율적으로 프로세스들에게 할당되어야 함


- 연속 메모리 할당 기법은 초창기 기법 중 하나임


- 주 기억장치는 일반적으로 두 영역(partition)으로 구분
• OS : 일반적으로 낮은 주소 영역에 할당
• 사용자 프로세스 : 운영체제가 사용하지 않는 높은 주소 영역에 할당

고정 분할(Fixed Partitions)

• 프로세스를 위한 고정된 크기의 파티션으로 메모리 공간을 할당
• 장점: 메모리 관리 단순
• 단점
– 메모리 낭비 발생
– Internal Fragmentation 발생
– 파티션보다 큰 프로세스에 대해서는 할당 불가

가변 분할 
• 프로세스의 생성과 소멸의 잦은 발생 시 빈 공간이 발생 - HOLE
• External Fragmentation 발생

• 분산 holes에 대하여 새로운 프로세스가 생성될 때 점유하는 방식
• Holes에 대하여 배열(Array) 또는 연결리스트(Linked List)로 관리


선택 기법: *
• First-Fit: 프로세스가 들어갈 수 있는 첫번째 hole를 선택
 Best-Fit: 점유할 때 가장 작은 hole이 발생될 수 있는공간을 선택
• Worst-Fit: 가장 큰 hole을 선택


6. 가상기억장치 관리 전략


기억 장치 관리 전략

종류

반입 전략(Fetch Strategy)


• 보조기억장치 내 프로그램/데이터를 주기억 장치로 가져오는 시기 결정
• 종류: 요구((On-)demand) 반입, 예상(Anticipatory) 반입

요구(Demand) 반입

- 요구가 있을 때마다 주기억 장치로 옮기는 방식
- 사용자 명령에 의한 응용 프로그램 실행


예상(Anticipatory) 반입

- 앞으로 요구될 데이터 또는 프로그램을 미리 주기억 장치에 적재
- 가상 기억장치 기법에서 주로 사용


- 자주 사용되는 것을 미리 가져다 놓음 = 워킹 셋(Working Set) 개념
- 앞으로 사용할 가능성이 높은 페이지를 미리 가져다 놓음 = 구역성(Locality)의 개념

- 예상 성공 = 성능 향상
- 예상 실패 = 오버 헤드(Overhead) 발생


배치 전략(Placement Strategy)


• 프로그램/데이터를 주기억 장치에 배치
• 종류: 최초(First Fit), 최적(Best Fit), 최악(Worst Fit)

 


교체(재배치) 전략(Replacement Strategy)


• 빈 공간 확보를 위해 제거할 프로그램/데이터를 선택
• 종류: 최적화(OPT), FIFO(FCFS), LRU, LFU, NUR, PFF 등

OPT 전략 = OPTimal Replacement, 최적 재배치 전략

- 페이지 사용 횟수를 정확히 예측하여 교체
- Belady의 알고리즘
- 앞으로 가장 오랫동안 사용되지 않을 페이지와 교체 = 미래를 봄
- 실현 가능성이 희박 = 미래를 알 수 없기 때문
- 페이지 부재 횟수가 가장 적으므로 성공률(Hit rate)이 가장 큼

FIFO(First In First Out) 전략

- 적재된 페이지에 타임 스탬프를 적용
- 페이지 프레임 가장 오래된 페이지를 교체
- 페이지 교체가 가장 많음 = 페이지 부재가 가장 많이 발생

LRU(Least Recently Used) 전략

- 참조된 지 가장 오래된 페이지를 대체
• LRU : 참조 페이지 기준
• vs. FIFO: 페이지 프레임 기준


- 현시점에서 가장 오랫동안 사용하지 않은 페이지를 교체
- 각 페이지마다 계수기를 두어 사용하는 기법

LFU(Least Frequently Used) 전략

- 페이지 별 참조된 횟수를 기억
- 참조 횟수가 가장 적은 페이지를 교체

NUR(Not Used Recently) 전략

- 두 개의 비트(bit)로 페이지 사용 및 변형 상태를 관리
- 최근에 사용(참조)하지 않은 페이지를 우선 제거
- 일정한 시간 후 다시 초기화

PFF(Page Fault Frequently)

- 자주 사용(참조)하는 페이지들을 주기억 장치에 미리 배치 = 페이지 폴트↓
- 워킹 셋의 내용들을 관찰하여 최근 자주 사용되지 않는 것을 교체

• LFU의 변형

Second Chance(FIFO의 2차 기회 부여)

- FIFO에서 가장 오래된 페이지를 제거하기 전에 한 번 기회를 더 줌
- 가장 오래된 페이지임을 알기 위해 LRU 계수기가 필요


7. 디스크 구조 및 스케줄링에 따른 성능 분석, RAID 종류


기본 구조

- 암이 이동하여 트랙의 선별이 가능
- 원판이 회전하여 섹터의 접근이 가능

기능

원판(플래터)

• 표면에 자성을 입혀 0과 1의 데이터를 저장
- N극 : 0 / S극 : 1


• 보통 2장 이상으로 구성
• 일정한 속도로 회전


섹터

• 하드디스크의 가장 작은 저장 단위
• 하나의 섹터에는 한 덩어리의 데이터가 저장


• 블록
- 하드디스크와 운영체제 사이 데이터 전송을 위한 단위
- 한 블록은 하드디스크내 여러 개의 섹터로 구성됨

 

• 섹터 vs 블록

- 하드디스크의 저장 단위
- 운영체제의 저장 단위

트랙

• 회전축을 중심으로 데이터가 기록되는 동심원
• 동일한 반경에 있는 섹터들의 집합


헤드

• 하드디스크에서 데이터를 읽거나 쓸 때 사용
• 원판에서 살짝 떨어져 있음
• 충격 등에 의해 생긴 원판의 상처 부분은 심할 경우 배드(bad) 섹터가 됨

디스크 스케줄링

- 트랙의 이동을 최소화하여 탐색 시간을 줄이는 것이 가장 큰 목적
• 트랙이 이동하는 총 거리가 짧을 수록 성능이 더 좋음


- 섹터의 탐색은 원판의 빠른 회전과 소수의 블록이 다수의 섹터로 구성되므로, 성능에 큰 영향을 주지 않음

FCFS 디스크 스케줄링 - First Come, First Service Disk Scheduling

- 요청이 들어온 순서대로 트랙을 검색
- 헤드가 이동한 총 거리
• D = 40 + 10 + 40 + 20 = 110

SSTF 디스크 스케줄링 - Shortest Seek Time First Disk Scheduling

- 현재 헤더의 위치를 기준으로 가장 가까운 트랙을 검색
- 헤드가 이동한 총 거리
• D = 30 + 10 + 30 + 20 = 90

SCAN = 엘리베이터 알고리즘

- SSTF의 응답 시간 편차를 극복
- Denning*이 개발
- 기아 문제 해결
- 현재 방향의 마지막 트랙 도달 후, 방향을 바꿈
- 원하는 트랙이 가장 안쪽과 바깥쪽에 근접할 때 유리

 

- 동작 예: 시작 위치: 50
• D = 20 + 20 + 10 + 60 + 10 + 30 = 150

C-SCAN

- SCAN의 안쪽과 바깥쪽의 차별 대우를 없앰
- 스캔 방향을 지정된 한 방향으로만 제한
- 한 방향의 마지막 트랙을 만나면, 암은 디스크 반대쪽으로 돌아서 다시 스캔을 시작

 

- 동작 예: 시작 위치: 50
• D = 20 + 20 + 10 + 100 + 30 + 10 = 190

RAID(Redundant Array of Independent Disk)

- 자동으로 백업을 하고 장애를 극복하기 위한 시스템
- 보통 두 개 이상의 동일한 디스크를 탑재하여 데이터를 중복 저장(백업)

 

- 대표적 종류:
• RAID 0 : 스트라이프(Stripe)
• RAID 1 : 미러링(Mirroring)
• RAID 2 : RAID 0 + ECC(Error Correction)
• RAID 4 : RAID 0 + Parity
• RAID 5 : RAID 4의 개선


8~11. 파일시스템 및 기록구조


파일 시스템

정의

저장매체(예: 하드디스크)에 데이터를 효율적으로 관리하기 위한 용도

 

컴퓨팅을 위한 파일들을 관리하는 운영체제의 한 부분
• 파일에 데이터를 효율적으로 읽고 쓰기 위해 구현
• 파일들을 효율적으로 관리하기 위해 구현

 

운영체제의 기능 및 특성에 따라 다양한 파일 시스템이 존재

파일 기록 구조

순차 파일 구조(Sequential File Structure)
• 파일의 내용이 하나의 연속된 줄로 기록된 형태
• 연속적 데이터 접근을 기반한 매체(자기 테이프)에서 가장 효율적 방식


• 장점
– 낭비되는 저장 공간이 없음
– 데이터의 빠른 읽기/쓰기가 가능


• 단점
– 내용 갱신 및 중간 삽입이 비효율적임
– 위치 이동 시 너무 오래 걸림

 

인덱스 파일 구조(Index File Structure)
• 순차 파일 구조에 인덱스를 위한 필드를 추가한 방식
• 주로 디스크 기반의 저장매체에서 사용
• 현대의 기록매체에서 주로 사용하는 방식


• 장점
– 빠른 접근 및 위치 이동이 가능
– 중간에 삽입 및 변경이 쉬움


• 단점
– 내부 단편화가 발생
– 디스크의 낭비가 발생될 수 있음
(= 가성비 고려 대용량으로 극복)


12~13. 디렉토리 및 경로관련 사항


디렉터리

정의

- Directory
- 파일시스템에서 관리되는 파일들을 체계적으로 관리하기 위한 공간
- 공간: 논리적(가상) 영역
- 파일 및 하부 디렉터리들의 리스트를 관리
- 디렉터리 내 별도의 파일시스템 구성이 가능
• 파일들을 기능 또는 속성에 따라 분류해서 보관이 가능

 

경로(Path)

파일이 전체 디렉터리 중 어디에 있는지를 나타내는 정보

 

동일 디렉터리에는 동일한 명칭의 파일 또는 디렉터리가 존재할 수 없음
• 단, 동일 명의 파일이나 디렉터리는 다른 디렉터리에 존재할 수 있음

 

루트(root) 디렉터리: 최상위 디렉터리를 의미

절대 경로

• 루트 디렉터리(/)를 기준으로 파일의 위치를 나타내는 방식
• 예: /etc/default/

상대 경로

• 현재 있는 위치를 기준으로 파일의 위치를 표시하는 방식
• 예: ../ (상위 경로를 의미)


14~20. 파일 처리 함수


파일 처리 : 생성 및 시간변경

명령: touch [-t YYYYMMDDhhmm.ss] filename
• 파일의 시간 정보 수정을 주목적으로 함
• 지정한 파일이 없을 때에는 파일을 생성
• 시간 생성을 위한 옵션으로 “-t”를 사용
– 예: touch –t 202104200910.00


• 일반적 옵션:
– -a : 접근 시간만 변경
– -m : 수정 시간만 변경


시간 확인
• 명령 예:
– $ ls -l --full-time --time=atime
– $ ls -l --full-time --time=ctime
– $ ls -l --full-time --time=birth

 

파일 처리 : 타입 보기

명령: file filename
• 지정한 파일의 타입을 출력

파일 처리 : 복사

명령: cp [원본] [경로 또는 대상파일]
• 지정한 “원본”파일을 “대상파일”또는 “경로”하단에 복사
• 대표적인 옵션:
– -a : 속성까지 복사
– -R, -r : 디렉터리 하단까지 복사
– -b : 동일한 파일이 있으면 백업본 생성(~)
– -i : 덮어쓰기를 할 지를 묻기

파일 처리 : 링크

명령: ln [-s] [원본] [대상파일]
• 원본 파일을 대상파일로 링크
• 파일의 내용은 동일하며 껍데기만 복사되는 원리
– 윈도우의 바로가기 아이콘과 유사한 개념
• 옵션:
– -s: 심볼릭 링크로 파일을 생성
– “”: 하드 링크로 파일을 생성


링크의 타입
• 하드 링크(hard link)
– i-node는 동일하나 껍데기가 다른 파일
• 심볼릭 링크(symbolic link)
– i-node는 다르나 껍데기가 다른 파일의 이름을 참조

 

파일 처리 : 이동

명령: mv [원본] [대상]
• 지정한 원본파일을 대상파일로 변경
• 파일이름 변경 기능도 수행

 

파일 처리 : 삭제

명령: rm [옵션] [파일명 또는 디렉터리명]

 

지정한 파일이나 디렉터리를 삭제

 

옵션
• -i: 확인 후 삭제
• -f: 무조건 삭제
• -r: 디렉터리 삭제

'2-1 > 운영체제' 카테고리의 다른 글

운영체제 14주차 정리 - 2  (0) 2023.06.02
운영체제 14주차 정리 - 1  (0) 2023.06.02
운영체제 13주차 정리 - 3  (0) 2023.05.27
운영체제 13주차 정리 - 2  (0) 2023.05.27
운영체제 13주차 정리 - 1  (0) 2023.05.26