29
14. 유닉스 내부 구조 UNIX 실습 1

UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

14장. 유닉스 내부 구조

UNIX 및 실습

•1

Page 2: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

학습목표

유닉스 커널의 기능과 구조를 이해한다.

파일 시스템의 내부 구조를 이해하고, inode가

무엇인지 배운다.

프로세스가 어떻게 동작하는지 이해한다.

메모리가 사용되는 방식을 이해한다.

프로세스간 통신 방식에는 어떤 것이 있는지

이해한다.

입출력 장치는 어떻게 동작하는지 이해한다.

•2

Page 3: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

Section 01 유닉스 커널의 구조

커널의 정의

프로세스 관리와 메모리 관리, 입출력 관리,

파일 시스템 관리 등과 같이 운영체제가

수행하는 핵심적인 기능을 수행

커널의 기능

항상 메모리에 상주하면서 시스템을 관리

사용자와 하드웨어 사이를 연결

모든 운영체제는 각자 독특한 커널 구조를

가지고 서비스를 제공

•3

Page 4: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

커널의 구성요소

•4

Page 5: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

Section 02 파일시스템이란

파일시스템이란

파일을 저장하기 위한 공간을 할당하고, 파일에 대한 접근을

제어하는 등 파일을 관리하는 기능을 담당

유닉스 시스템은 파일이나 디렉토리를 주로 하드디스크장치에

저장하게 되는데, 한 시스템에 하나 이상의 디스크 장치를 설치

파티션

하드디스크는 관리의 편리를 위해 보통 몇 개의 파티션으로

분할해 사용

각 파티션에는 하나의 파일 시스템이 구성

커널은 디스크 단위가 아닌 파티션별로 장치 번호를 붙여서 관리

•5

Page 6: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

디스크 구조 [1/2]

하드디스크의 물리적인

구조

여러 장의

플래터(디스크)와

읽기/쓰기 헤드로 구성

하드디스크의 논리적인

구조

트랙과 섹터로 구성

각 플래터의 같은 위치에

있는 트랙들을

실린더라고 부름

•6

트랙 섹터

실린더

Page 7: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

디스크 구조 [2/2]

디스크 접근 방법 블록 단위 접근

블록은 일반적으로 8KB

블록 단위로 읽고, 쓰기 실행

일반적으로 디스크를 읽거나 쓸 때 블록 단위로 접근

문자 단위 접근 섹터 단위로 읽고, 쓰기 실행

섹터의 기본 크기는 512바이트

Raw Device라고도 함

파일시스템을 검사할 때 문자 단위로 접근

디스크레이블 디스크의 파티션 정보

보통 0번 트랙, 0번 섹터에 저장

레이블이 깨지면 디스크를 읽을 수 없음

•7

Page 8: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파티션과 파일시스템 [1/2]

파티션

하드디스크를 보다 작은 단위로 나누어 사용할 때

이용하는 작은 단위

유닉스에서 하드디스크는 8개의 파티션으로

나누고 각 파티션별로 번호를 붙여 사용

디스크를 파티션으로 나누는 작업은 유닉스를

설치할 때 수행

파티션은 윈도우의 C, D 드라이브 같이 각각

독립적인 드라이브처럼 사용

솔라리스에서는 8개까지 파티션을 나눌 수 있음

•8

Page 9: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파티션과 파일시스템 [2/2]

솔라리스의 파티션과 파일시스템

•9

파티션 파일시스템 기능

0 / (root) 시스템 부팅과 환경 설정에 필요한 파일과 디렉토리 및 다른

파일 시스템을 연결하는 디렉토리를 가지고 있는 파티션

1 Swap 가상 메모리에 필요한 임시 메모리 공간으로 사용되는 파티션

2 전체 전체 디스크를 나타내는 파티션

3 usr 사용자 명령과 각종 유틸리티를 가지고 있는 파티션

4

분할 가능한 파티션들

솔라리스 설치시 각 파티션에 적절한 파일 시스템을 생성

보통 사용자 홈디렉토리를 위한 파티션(/export/home), 부가

적인 소프트웨어를 설치하는 파티션(/opt, /usr/local 등) 등을

설치

5

6

7

Page 10: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파일시스템 구조[1/4]

•10

Page 11: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파일시스템 구조[2/4]

부트 블록

파일 시스템의 1번 섹터부터 15번 섹터까지의 15개 섹터에 위치

부팅시 유닉스를 초기화하기 위한 부트스트랩 코드를 가지고 있음

유닉스 커널이 설치된 루트 파일 시스템은 부트 블록에 실제 부트스트랩

코드를 가지고 있으나 나머지 파일 시스템은 처음 15개 섹터를 비워두고

있음

기본 수퍼 블록

부트 블록 다음의 16개 섹터는 기본 수퍼 블록

수퍼 블록은 해당 파일 시스템에 대한 모든 정보를 가지고 있음

데이터 블록의 수, 실린더 그룹의 수, 데이터 블록의 크기, 하드웨어 정보,

파일 시스템을 마운트할 디렉토리 위치, 파일 시스템의 상태 정보 등이

수퍼 블록에 저장

•11

Page 12: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파일시스템 구조[3/4]

실린더 그룹

파일 시스템을 구성하는 실린더들은 관리의 편의를 위해 다시 그룹으로 나누어놓은 것

한 개의 실린더 그룹은 보통 16~256개의 실린더로 구성

각 실린더 그룹은 백업 수퍼 블록, 실린더 그룹 블록, inode 테이블, 데이터 블록으로

구성

백업 수퍼 블록

각 실린더 그룹의 처음 16섹터는 기본 수퍼 블록을 복사한 백업 수퍼 블록을 저장

기본 수퍼 블록이 깨졌을 경우 백업 수퍼 블록 중 하나를 이용해 다시 복구 가능

실린더 그룹 블록

백업 수퍼 블록 다음에는 실린더 그룹 블록이 위치

해당 실린더 그룹이 관리하는 inode의 총 개수, 데이터 블록의 총 개수, 디렉토리의 개수,

사용 가능한 블록 수, 사용 가능한 inode 수가 저장

•12

Page 13: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파일시스템 구조[4/4]

inode 테이블

파일이나 디렉토리를 관리하기 위한 inode들이 저장

inode는 파일마다 할당되며 파일의 소유자, 수정 날짜,

크기, 데이터 블록의 위치 등의 정보를 저장

데이터 블록

실제 파일의 내용이 저장되는 곳

유닉스에서 데이터 블록의 기본 크기는 8KB

필요시 1KB단위로 나누어서 파일에 할당도 가능

단편화(Fragmentation)

•13

Page 14: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파일의 내부표현 – inode [1/2]

파일의 내부적 표현

index node(색인 노드)

파일의 소유자, 파일의 접근 허가, 파일 크기, 파일

수정시간, 파일 접근 시간, 데이터 블록의 위치,

하드 링크 수 등의 정보를 저장

유닉스에서 파일 이름은 하나의 inode로 연결

같은 inode와 연결된 파일 이름은 여러 개가 있을 수

있으며,같은 inode에 연결된 파일 이름을 링크라고

•14

Page 15: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

파일의 내부표현 – inode [2/2]

•15

유닉스에서 만들 수 있는 최대 파일 크기 96KB + 16,384KB(8KB * 2048개) + 33,554,432KB(8KB * 2048개 * 2048개) + 68,719,476,736KB (8KB * 2048개 * 2048개 * 2048개) = 약 64TB

Page 16: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

Section 03 프로세스 관리

프로세스는 실행 중인 프로그램

커널은 CPU의 작업 순서를 적절히

스케줄링하여 프로세스를 처리함으로써

여러 개의 프로세스가 동시에 수행되는

것처럼 나타남

프로세스의 구조

•16

Page 17: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

프로세스 구조

텍스트 영역

실행 코드가 저장되며, 프로세스 실행

중 크기가 변하지 않는 고정 영역

데이터 영역

프로그램에서 정의된 전역변수가

고정 영역에 할당

힙(Heap) 영역

프로그램의 실행 중에 동적으로

메모리를 요청하는 경우에 할당되는

영역으로 가변 영역

스택 영역

프로그램에서 정의된 지역변수를

위한 가변영역

빈 공간

가변영역을 위한 빈 메모리 영역

•17

Page 18: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

프로세스의 상태와 전이

•18

1) 프로세스가 실행되면 일단 사용자 모드에서 수행된다.

2) 사용자 모드에서 시스템 호출을 하면 커널 모드로 전환되어 커널 모드에서 수행된다.

3) 커널 모드에서 수행 중 입출력 완료를 기다릴 때와 같이 더 이상 수행을 계속할 수 없을 때 수면 상태로 전환된다.

4) 수면 중이던 프로세스가 깨어나 수행대기 상태로 전환되어 스케줄링이 되면 바로 실행될 수 있도록 준비한다.

Page 19: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

프로세스의 생성

프로세스 번호(PID)

유닉스에서 실행 중인 프로세스에 할당되는 번호

프로세스의 생성

0번 프로세스 : 부팅시 자동으로 생성

1번 프로세스 : 0번 프로세스가 생성, init 프로세스, 나머지

모든 프로세스의 조상

프로세스 생성 과정

부모프로세스가 fork 시스템 호출로 자식 프로세스 생성

exec 시스템 호출로 자식 프로세스에서 다른 프로그램을

실행

•19

Page 20: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

특별한 프로세스

고아 프로세스

자식 프로세스가 돌아오기를 기다리지 않고 부모 프로세스가

종료할 경우 이 자식 프로세스들이 고아 프로세스

고아 프로세스들은 모두 1번 프로세스의 자식 프로세스로

등록되어 실행을 마치고 정상적으로 종료

좀비 프로세스

이미 사용중인 모든 자원을 반납했지만 부모 프로세스로부터

승인을 받지 못한 상태의 프로세스

좀비 프로세스들은 실제로 실행되고 있지는 않은 프로세스이지만

동작 중인 프로세스 테이블 목록을 차지하고 있음

프로세스 목록에 defunct 프로세스라고 나오기도 함

일반적인 방법으로는 없앨 수가 없음

•20

Page 21: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

Section 04 메모리 관리 [1/3]

가상메모리

기존 메모리와 하드디스크 공간의 일부를 합하여 사용하는 기법

수면 상태이거나 대기 상태인 프로세스들을 하드디스크에

저장했다가 실행할 순서가 되면 다시 메모리로 읽어들이면

CPU에서 실행 중인 프로세스에 충분한 메모리를 제공 가능

커널의 메모리관리시스템은 가상 메모리의 동작을 관리

스와핑

가상 메모리로 사용되는 하드디스크 장치를 스왑 장치

프로세스를 스왑 장치에 기록했다가, 다시 읽어오는 동작을

스와핑(Swapping)

스왑 아웃(swap Out) : 스왑장치로 프로세스를 이동

스왑인(swap in) : 다시 메모리로 읽어드리는 것

•21

Page 22: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

메모리 관리 [2/3]

가상메모리와 스와핑

•22

Page 23: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

메모리 관리 [3/3]

요구페이징 (Demand Paging)

BSD4.0 유닉스에서 도입

프로세스를 페이지라는 단위로 나누어 관리

실행에 필요한 페이지만 메모리에 두고, 나머지

페이지는 스왑 장치에 두었다가 요구가 있으면

해당 페이지를 메모리로 읽어들이는 기법

요구 페이징을 사용하면 프로세스를 페이지로

나누어 스와핑을 하므로 프로세스의 크기에

제약을 받지 않아도 되는 장점이 있음

•23

Page 24: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

Section 05 프로세스간 통신 [1/3]

프로세스간 통신

IPC (InterProcess Communication)

프로세스간에 정보를 주고받는 것

한 시스템내에서의 IPC

파이프(pipe)

두 프로세스간에 한쪽 방향으로 통신을 할 수 있도록 지원

쉘에서 | 기호는 파이프를 의미

pipe 시스템 호출로 구현이 가능

파이프에 이름이 붙지 않은 언네임드 파이프(Unamed Pipe)와 이름이 붙어있는

네임드 파이프(Named Pipe)로 구분

네임드 파이프는 FIFO라고도 부름

•24

파이프

부모프로세스

쓰기 파이프

자식프로세스

읽기

fork()

pipe()

Page 25: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

프로세스간 통신 [2/3]

한 시스템내에서의 IPC (계속)

시스템 V IPC

메시지 큐, 공유 메모리, 세마포어

메시지 큐 : 프로세스들 사이에 메시지를 주고받는 기능을 지원

공유 메모리 : 프로세스들이 메모리를 공유하고 이를 통해 통신하는

기능을 지원

세마포어 : 메모리에 접근하는 프로세스들의 동기화를 지원

ipcs명령으로 시스템V IPC 확인 가능

•25

telnet hanbitbook.co.kr

$ ipcs

IPC status from <running system> as of 2006년 4월 18일 화요일

오후 02시 38분 01초

Message Queue facility inactive.

T ID KEY MODE OWNER GROUP

Shared Memory:

m 0 0x50038969 --rw-r--r-- root root

Semaphores:

$

세마포어

공유메모리

메시지큐

Page 26: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

프로세스간 통신 [3/3]

네트워크를 이용한 통신

TCP/IP 프로토콜 이용

소켓 인터페이스 제공

•26

응용프로그램

TCP/UDP

IP

소켓

응용프로그램

TCP/UDP

IP

소켓

네트워크

Page 27: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

Section 06 입출력 장치 관리 [1/3]

프로세스와 디스크, 테이프 장치, 터미널, 프린터,

랜카드 같은 주변장치와 통신을 할 수 있도록 지원

장치를 제어하는 커널의 모듈을 장치 드라이버

사용하는 장치의 종류에 따라 모두 가지고 있어야 함

특수파일

장치를 파일로 취급하는데 이를 특수 파일이라고 함

장치들도 일반 파일처럼 파일명을 가지고 있음

솔라리스의 경우 하드디스크 장치명은 c0t0d0s0와 같은

형태를 사용

•27

Page 28: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

입출력 장치 관리 [2/3]

블록장치

디스크와 테이프 같은 장치

블록단위(8KB)로 읽고 씀

문자장치

터미널 같이 블록 장치가 아닌 다른 장치

블록 장치들도 문자 장치 인터페이스를 가질 수 있음

디스크를 읽고 쓸 때 블록 단위로 읽고 쓰는 것도 가능하고, 문자 단위로 읽고 쓰는

것도 가능

솔라리스의 경우

디스크의 블록 장치 특수 파일명과 문자 장치 특수 파일명을 같은 이름을

쓰고 대신 디렉토리를 구분해 저장

c0t0d0s0로 같더라도 /dev/dsk 디렉토리에 위치한 것은 블록 장치를

가리키고, /dev/rdsk 디렉토리에 위치한 것은 문자 장치를 가리킴

rdsk에서 r은 raw의 약자로 문자 장치를 의미

•28

Page 29: UNIX 및 실습 14장 유닉스 내부 구조 - mmu.ac.krlily.mmu.ac.kr/lecture/12u1/UNIX_14.pdf파일시스템 구조[3/4] 실린더 그룹 파일 시스템을 구성하는 실린더들은

입출력 장치 관리 [3/3]

블록장치

문자장치

•29

telnet hanbitbook.co.kr

$ ls -ld /dev/dsk

총 0 0 brw-r----- 1 root sys 32, 24 2002년 12월 26일 c0t0d0s0 0 brw-r----- 1 root sys 32, 25 2002년 12월 26일 c0t0d0s1 0 brw-r----- 1 root sys 32, 26 2002년 12월 26일 c0t0d0s2 ...

telnet hanbitbook.co.kr

$ ls -ld /dev/rdsk

총 0 0 crw-r----- 1 root sys 32, 24 2002년 12월 26일 c0t0d0s0 0 crw-r----- 1 root sys 32, 25 2002년 12월 26일 c0t0d0s1 0 crw-r----- 1 root sys 32, 26 2002년 12월 26일 c0t0d0s2 ...