입출력 (I/O) 장치 및 파일 시스템
입출력 장치
• 입출력은 컴퓨터 시스템에 있어서 사용자와의 상호작용을 위한 중요한 도구임
– 입출력 장치의 예: 키보드, 마우스, 디스플레이, 디스크 등
•주요 이슈 사항
– 여러 종류의 입출력 장치는 어떻게 컴퓨터 시스템에 통합될 수 있는가?
– 입출력을 효율적으로 할 수 있는 방법은 무엇인가?
입출력 장치와의 상호 작용
• 폴링(Polling)과 인터럽트(Interrupt) 방식을 통하여 입출력 장치의 상태 및 데이터를 읽음
• <폴링 방식>
– 운영체제는 상태 레지스터를 주기적으로 읽어 입출력 장치가 사용할 수 있는지를 확인함
– 동작 방식이 단순하여 구현하기가 쉽지만 입출력 장치가 사용되는 동안 CPU를 낭비함
• <인터럽트 방식>
– 입출력이 이루어지는 동안 프로세스를 재우고, 다른 프로세스로 전환함
– 입출력이 완료되면 인터럽트를 발생시켜 잠든 프로세스를 깨움
• 인터럽트 방식이 폴링 방식에 비하여 CPU 사용 효율이 높지만, 항상 좋은 방식은 아님
– 입출력이 매우 짧게 이루어지는 경우는 인터럽트 방식이 비효율적임
• 문맥 교환(Context Switching)으로 인하여 오히려 느려짐
하드 디스크의 구조
•2 ~ 10 헤드로 구성( 플래터당 2개의 헤드)
- HDD 당당 1 ~ 5개의 플래터
•지름: 2.5” – 14”
•용량: ~ 22TB (SSD: ~ 100TB)
•섹터 크기: 64 bytes to 8K bytes
- 대부분의 PC에서는 512 bytes
•한 면 당당 700 ~ 20,480개의 트랙
•트랙 당당 16 ~ 1,600개의 섹터
* LP판이랑 같은 원리
하드 디스크의 동작
• 하드 디스크의 입출력 시간은 회전(Rotation), 찾기(Seek),전송(Transfer) 시간으로 이루어짐
하드 디스크의 성능
• 입출력 시간을 계산하여 하드 디스크의 성능을 판단함
– 순차적(Sequential) vs. 무작위(Random) 접근에 따른 성능 차이가 있음
– 일반적으로 Seek time > Rotation time > TransferTime으로시간 소요
• Seek time과 Rotation time은 밀리초이며, Transfer time은 마이크로초 수준임
– 순차 접근의 경우 Transfer time, 무작위 접근의 경우에는 Seek + Rotation time이 중요함
파일 시스템
• 부팅 시 운영체제의 첫 번째 작업은 루트 파일 시스템을 구성하는 것임
– 내/외부 하드 디스크, SSD, CDs, DVDs, USB 메모리 등에서 부팅 이미지를 읽음
– 각 장치에서 파티션 정보를 읽고 마운트(Mount) 함
• 마운트 정보는 MBR(Master Boot Record)에 저장되어 있음
• 마운트: 저장 장치에 접근할 수 있는 경로를디렉터리 구조에 편입시키는 작업
디렉토리 및 파일
• 마운트된 파티션은 디렉토리와 파일로 구성되어 있으며, 이들을 파일시스템에서 관리함
– 파일 시스템: 파일을 관리하기 위한 체계로 FAT, NTFS, ext2/3/4 등이 있음
– 파일
• 두 개의 구성요소로 이루어짐: 데이터와 메타데이터
– 데이터는 실제 파일 데이터를 저장하는 것으로 여러 개의 블록으로 이루어짐
– 메타데이터는 파일에 관한 정보를 저장하는 것으로 이름, 크기, 생성/수정/접근날짜, 소유권 등에 대한 정보를 포함함
• 파일은 확장자를 가질 수 있으나, 특별한 의미가 있는 것은 아님(연결 프로그램을 지정하기 위하여 사용됨)
– 디렉토리
• 계측적인 트리 형태의 파일 구조
• 디렉토리도 파일의 한 종류로 데이터와 메타데이터를 가짐
상대 경로와 절대 경로
• 파일의 위치를 가리키는 두 종류의 경로
– <절대 경로>
• 루트(최상위위치)부터 파일까지의 모든 경로를 다 포함
– 예: /home/cbw/cs5600/hw4.pdf
– 예: C:\Users\cbw\Documents\
–<상대 경로>
• 운영체제는 각 프로세스마다 현재 작업 중인 디렉토리 경로를 기록하고 있음
• 현재 작업 중인 디렉터리에서 파일까지의 경로
• 예 [작업 중인 디렉토리 = /home/cbw]:
–syllabus.docx [ →/home/cbw/syllabus.docx]
– cs5600/hw4.pdf [ →/home/cbw/cs5600/hw4.pdf]
–./cs5600/hw4.pdf [ →/home/cbw/cs5600/hw4.pdf]
–../amislove/music.mp3 [ →/home/amislove/music.mp3]
동시성(Concurrency)
• 여러 프로세스를 실행하기 위해 운영체제는 프로세스 스케줄링을 함
– 동시에 프로세스를 실행하기 위해 선점형 알고리즘을 채택
• 동시성(Concurrency)과 병렬성(Parallelism)의 차이
프로세스(Process)와 스레드(Thread)
• 프로세스(Process)
- 프로세스는 독립된 주소 체계(메모리)를 가지므로 서로 다른 프로세스와 데이터를 공유하기 위해서는 특별한 방법이 필요함
- IPC(Inter-Process Communication)를 사용해서 프로세스간 통신을 하여 데이터를 공유할 수 있음
- 하지만, 이러한 IPC는 프로그래밍이 어렵고, 운영체제에서 더 많은 자원이 지원되어야 하므로 비효율적임
• 스레드(Thread)
- 프로그램(프로세스) 내에서 스케줄링이 가능한 작업 단위
- 프로세스는 독립된 주소 체계를 가지는 반면 쓰레드는 동일한 주소 체계에서 동작하므로 서로 데이터(변수)의 공유가 가능함
➔스레드로인해 효율적인 실행이 가능해진 반면, 심각한 문제를 야기함
식사하는 철학자들(Dijkstra)
•5명의 철학자, 5개의 포크, 1개의 스파게티 접시
– 철학자는 생각하고 먹는 것만 함
– 스파게티를 먹기 위해서는 2개의 포크가 필요함
– 모든 철학자들이 굶는 상황은 언제인가? -> 포크 1개씩 잡기 etc
– 철학자들이 굶지 않게 할 수 있는 방법은? -> 순서대로 먹기(규칙 생성)
경쟁 상태(Race Condition)
• 여러 개의 작업이 동시에 공유 자원을 사용하는 상태를 경쟁 상태라고 하며, 오류가 발생할 수 있음
경쟁 상태와 임계 영역
• 경쟁상태는 항상 발생하는 것이 아님 (non-deterministic)
•임계 영역은 공유 자원을 사용하는 프로그램 코드를 지칭하며, 여러 개의 작업이 동시에 공유 자원에 접근할 때 임계 영역은 보호받아야 함
계영역을 보호하기 위한 Lock
• Lock
– 임계 영역에 하나의 작업만 허용하기 위한 방법으로 여러 종류의 Lock이 있음
– Lock을 잘 못 쓸 경우, 프로그램의 성능이 저하되거나 교착상태(Dead Lock)에 빠질 수 있음
• 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태
• 데드락이 발생하면 프로그램이나 시스템을 재시작하는것이 가장 효율적임
– 데드락을 예방하기 위한 여러 방법이 있으나, 효율성이 떨어지는 문제 발생
• 그러므로, 데드락이 발생하지 않도록 프로그램을 설계 및 구현하는 것이 중요함
'KNU Freshman > 컴퓨터학개론' 카테고리의 다른 글
(11) 네트워크 (1) | 2024.06.03 |
---|---|
(10) 통신의 발전 과정 (0) | 2024.05.20 |
(8) 가상 메모리 (0) | 2024.04.16 |
(7) 운영체제에서의 CPU 스케줄링 (1) | 2024.04.15 |
(6)-2 운영체제의 주요 기능 (0) | 2024.04.15 |