SW Engineering 264

54_디스크 관리(Disk Management)

54_디스크 관리(Disk Management) 운영체제는 디스크 관리 기능 일부를 담당한다. 포맷을 통한 섹터의 관리, 컴퓨터 시작을 위한 부트 블록 관리, 디스크의 손상된 블록 등을 관리 한다. [디스크 포맷(Disk Format)] 디스크는 자료를 저장하기 전에 섹터들로 나누어져 있어야 한다. 이 과정을 저수준 포맷팅(low level formatting) 또는 물리적 포맷팅 이라 한다. 저수준 포맷팅은 섹터를 구분하기 위해 디스크를 적절한 자료구조로 채우는 것이며 자료 구조는 보통 헤더, 자료 영역(보통 512 바이트), 트레일러로 구분 된다. 헤더와 트레일러는 수정 코드(ECC, Error Correcting Code)와 같은 정보를 가지고 있다. 디스크 제어기가 섹터에 자료를 쓸 때 자료 값으..

53_디스크 스케줄링(Disk Scheduling)

53_디스크 스케줄링(Disk Scheduling) 운영체제의 역할 중 하나는 효율적인 하드웨어 사용이다. 디스크 드라이브의 경우에는 빠른 접근 시간과 높은 전송량을 제공해야 함을 의미한다. 디스크 접근시간은 두 가지 요소로 이루어지는데 탐색시간(seek time, 디스크 암이 헤드를 해당 실린더로 움직이는데 걸린 시간)과 회전 지연(rotational latency, 디스크 헤드가 원하는 섹터 위치로 도달하기까지 회전에 소요되는 추가적인 시간)시간 이다. 디스크 대역폭(bandwidth)은 단위 시간 당 전송되는 총 바이트 수이다. 효율적인 스케줄링은 접근 시간과 대역폭을 모두 향상 시킬 수 있다. 프로세스가 입/출력을 필요로 할 때마다 운영체제에 시스템 호출(system call)을 한다. 이 호출에..

52_네트워크 파일 시스템 (Netwrok File System)

52_네트워크 파일 시스템 (Netwrok File System) NFS는 LAN을 거쳐 원격 파일을 접근하기 위한 소프트웨어 시스템의 구현과 명세 모두를 말한다. 통신은 TCP 또는 UDP 두 가지 중 하나를 사용한다. NFS의 목적은 이들 파일 시스템들 사이에서 일정 수준의 공유를 투명하게 허용하는 것이다. 공유는 클라이언트 서버의 관계를 기반으로 하며 시스템은 동시에 클라이언트와 서버가 될 수 있다. [원격 디렉토리 접근] 원격 디렉토리가 특정 시스템(M1)으로부터 투명하게 접근 가능하도록 하기 위해서 M1의 클라이언트는 먼저 마운트 명령을 실행 한다. 마운트 명령은 원격 디렉토리가 지역 파일 시스템의 디렉토리 상에 장착 되게 한다. 마운트 명령이 완료되면 장착된 디렉토리는 지역 파일 시스템의 서브..

51_로그 구조 파일 시스템 (Log Structure File System)

51_로그 구조 파일 시스템 (Log Structure File System) 디스크 상의 디렉토리 구조, 자유 블록 포인터, 자유 FCB 포인터와 같은 파일 시스템 자료 구조는 시스템 고장 발생 시 일관성이 없어 질 수 있다. 운영체제가 로그 기반 기술을 사용하기 전에는 보통 이들에 대한 변경들은 이들 구조에 직접 적용 되었다. 파일 생성과 같은 대표적인 연산은 디스크 상의 파일 시스템 내부의 많은 구조적 변화를 포함한다. 이러한 변경은 고장에 의해 방해 받을 수 있고 이들 구조가 일관성이 없어지는 결과를 초래한다. 시스템 구조가 깨어질 수 있게 허용하고 복구 시 수리하도록 하는 접근 방법에는 여러 문제가 존재 한다. 그 중 한가지는 비일관성을 회복할 수 없을 수도 있다는 것이다. 일관성 검사가 구조를..

50_디스크 자유 공간 관리(Free-Space Management)

50_디스크 자유 공간 관리(Free-Space Management) 디스크의 공간은 제한되어 있기 때문에 삭제된 파일들일 차지하던 공간을 새로운 파일들을 위하여 다시 재사용하여야 한다. 시스템은 이러한 자유 공간을 리스트로 유지하고 관리한다. 디스크는 자유 공간 리스트에 디스크의 모든 자유 블록들을 등록 한다. 새로운 파일을 만들려면 자유 공간 리스트를 탐색하여 새로운 파일을 위한 공간을 할당 받아야 한다. 할당 된 공간은 자유 리스트로부터 삭제 된다. 자유 공간 관리를 위해서 꼭 리스트 형태로만 구현될 필요는 없다. 관리를 위해 사용되는 다양한 방법을 알아 보자. [비트 벡터(Bit Vector)] 자유 공간 리스트는 흔히 비트 맵(bit map) 또는 비트 벡터(bit vector)로써 구현 된다...

49_파일 할당 방법 (Allocation Method)

49_파일 할당 방법 (Allocation Method) 디스크의 직접 접근 특성이 파일의 구현에 융통성을 허용한다. 거의 모든 경우에 하나의 디스크에 여러 파일이 저장되며 이 파일들을 어떻게 디스크 공간에 배치해야 효율적으로 사용할 수 있을지 고민하게 된다. 디스크 공간을 할당 방법과 특성을 살펴 보자. [연속 할당 (Contiguous Allocation)] 연속 할당은 각 파일이 디스크 내에서 연속적인 공간을 차지하도록 요구 한다. 디스크 주소들은 디스크 상에서 선형 순서를 정의 한다. 이러한 순서를 따를 경우 단지 한 작업(job)이 디스크에 접근 한다고 가정하고 블록 b 다음에 블록 b+1을 접근 한다면 통상 헤드의 이동을 요하지 않는다. 헤드의 이동이 필요한 경우는 다음 섹터의 이동할 경우 이..

48_디렉토리 구현 (Directory Implementation)

48_디렉토리 구현 (Directory Implementation) 디렉토리를 구현하는 공간을 어떻게 할당하고 관리하는가? 파일 시스템의 효율, 성능과 이들 알고리즘 장단점을 알아 보자. [선형 리스트 (Linear List)] 디렉토리를 구현하는 가장 간단한 방법은 파일 이름과 자료 블록에 대한 포인터들의 선형 리스트를 디렉토리에 사용하는 것이다. 선형 리스트는 프로그래밍이 쉽지만 실행 시간이 길다. 새로운 파일을 생성하기 위해 먼저 디렉토리를 탐색하여 같은 이름의 존재 여부 확인 후 끝 부분에 새로운 항목을 첨가한다. 파일을 삭제 하려면 디렉토리에서 이름을 찾아 그 파일에 할당된 공간을 방출 한다. 파일 삭제 시간을 줄이기 위해 연결리스트를 사용할 수도 있다. 디렉토리 항목을 다시 사용하기 위해서는 ..

47_파일 시스템 구현 (File System Implementation)

47_파일 시스템 구현 (File System Implementation) 운영체제는 파일에 접근을 요구하는 프로세스를 위해 open(), close() 시스템 호출을 구현하며 디스크와 메모리 상에 존재하는 여러 구조가 파일 시스템을 구현하는데 사용된다. 디스크상의 구조는 다음과 같다. 부트 제어 블록(boot control block) : 볼륨 당 하나씩 존재하며 시스템이 그 파티션으로부터 운영체제를 부트 시키는 데 필요한 정보를 가지고 있다. 디스크가 운영체제를 가지고 있지 않다면 부트 제어 블록은 비어 있다. 부트 제어 블록은 일반적으로 한 파티션의 첫 번째 블록이다. UFS에서는 부트 블록, NTFS에서는 파티션 부트 섹터라 불린다. 볼륨 제어 블록 (volume control block) : 볼..

46_파일 시스템 구조 (File System Structure)

46_파일 시스템 구조 (File System Structure) 디스크는 여러 개의 파일을 저장하는데 다음 두 가지 중요한 특성을 가지고 있다. 디스크는 추가 장소를 사용하지 않고 재기록이 가능하다. 디스크로부터 한 블록을 읽고 변경하여 같은 장소에 재기록이 가능하다. 디스크에 있는 임의의 블록의 정보를 직접 접근 할 수 있다. 따라서 임의의 파일을 순차적 또는 무작위 방법으로 쉽게 접근 할 수 있다. 그리고 한 파일로부터 다른 파일로 전환이 요구 될 때 읽기-쓰기 헤드를 이동시키고 디스크가 회전하는 동안 기다리면 된다. 디스크는 한 번에 한 바이트를 전송하는 대신 입/출력 효율을 향상시키기 위해 메모리와 디스크간의 입/출력 전송은 블록 단위로 실행 된다. 각 블록은 하나 이상의 섹터이다. 디스크 드라..

45_파일 시스템 마운팅(File System Mounting)과 파티션 마운팅(Partition Mounting)

45_파일 시스템 마운팅(File System Mounting)과 파티션 마운팅(Partition Mounting) [파일 마운팅(File Mount)] 파일이 사용되기 전에 열리는 것처럼 파일 시스템은 프로세스들에 의해 사용되기 전에 장착(mount) 되어야 한다. 마운트 과정은 다음과 같다. 운영체제에게 장치 이름과 파일 시스템을 부착 할 수 있는 파일 구조 내의 위치가 주어진다. 일반적으로 마운트 포인트는 장착되는 파일 시스템이 부착될 비어있는 디렉토리이다. 운영체제는 장치가 유효한 파일 시스템을 포함하는지 확인 한다. 그 과정은 장치 드라이버가 장치 디렉토리를 읽고 디렉토리가 유효한 포맷을 가지고 있는지 확인하도록 요청 함으로써 이루어 진다. 운영체제는 파일 시스템이 지정된 마운트 포인트에 장착되..