Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 유저 모드의 동기화
- 프로세스 제어 블록
- 방금 그 곡
- The Banker's Algorithm
- 경량 프로세스
- Reentrant
- 문맥 교환
- 스레드
- 교착 상태
- 은행원 알고리즘
- Process Control Block
- Activity
- 커널 모드의 동기화
- 블로킹 논블로킹
- 인터락 함수
- 스레드 동기화
- Non-Preemptive
- Stack영역
- 프로세스
- 프로세스 상태 전이도
- 동기 비동기
- 유저 모드
- The DIning Philosopher Problem
- Light Weight Process
- 커널 모드
- Heap영역
- 임계 구역
- 뮤텍스(Mutex)
- Multi-level Queue
- 모니터(Monitor)
Archives
Blog For Me
[운영체제] 파일 접근 방법 본문
파일들은 정보를 저장한다. 파일이 사용될 때, 이 정보는 반드시 접근되어서 컴퓨터 메모리에 적재되어야 한다. 파일 내의 정보에 접근하는 몇몇의 방법이 있는데, 어떤 시스템은 오직 파일 접근 방법이 한 가지밖에 없다. 반면에, IBM mainframe 운영체제와 같은 다른 시스템들은 수많은 접근 방법들을 제공한다.
순차접근 (Sequential Access)
- 가장 간단한 접근 방법
- 파일 내의 정보들이 순서대로 처리되는데, 저장되어 있는 레코드 순서로 접근한다.
- 이 접근 모드는 가장 일반적이며, 편집기나 컴파일러는 보통 이러한 방식으로 파일에 접근한다.
- 읽기와 쓰기가 파일 연산의 대부분을 차지하고 있다.
- 읽기 연산은 파일의 다음 부분부터 읽어 나가며 자동적으로 입출력 위치를 추적하는 파일 포인터를 증가시킨다.
- 쓰기 연산은 파일의 끝 부분에 내용을 추가하며 새로운 파일의 끝으로 파일 포인터가 이동한다. 오프셋을 시작점이나 마지막 점으로 이동시킬 수 있고, n 정수만큼 건너뛸 수도 있다.
- 순차 접근은 테이프 모델에 기반하며 임의 접근 장치는 순차 접근이 가능하다.
직접 접근 (Direct Access)
- 파일은 프로그램이 특정한 순서 없이 빠르게 읽고 쓸 수 있도록 하는 고정된 길이의 논리 레코드 집합으로 정의된다.
- 직접 접근 방법은 파일의 디스크 모델에 기초하고 있는데, 디스크가 임의 파일 블록에 임의적 접근하는 것을 허용하기 때문이다.
- 직접 접근 측면에서, 파일은 번호를 갖는 일련의 블록 또는 레코드로 간주된다. 그래서 우리는 블록 14를 읽은 후에 블록 53을 읽으며, 블록 7에 작성할 수 있는 것이다. 직접 접근 파일에 읽기 또는 쓰기 순서에 제약이 없다.
- 직접 접근 파일은 대용량 정보에 즉각적인 접근에 용이하다. 이를 테면, 데이터베이스가 이러한 유형에 속하는데, 특정 내용에 관한 쿼리가 도착하면, 어느 블록이 관련 내용물을 포함하는지 계산하고 그 블록을 직접적으로 읽어들여 관련 정보를 제공한다.
- 직접 접근 방법을 위해 파일 연산이 블록 번호 매개변수를 포함할 수 있도록 수정되어야 한다. 사용자가 운영체제에 제공하는 블록 번호는 통상적으로 상대 블록 번호(relative block number)이다. 통상 파일의 시작을 0으로 보고 계산한 레코드의 위치로서의 번호이며, 실제로 절대적인 디스크의 주소가 첫 블록인 경우에 14703이고, 두 번째 블록의 경우에 3192여도 파일의 첫 번째 상대 블록은 0이고 다음은 1이다.
- 상대적 블록 번호 사용은 운영체제로 하여금 파일이 어디에 저장되어야 하는지 결정하게 하고 사용자가 자신의 파일이 아닌 곳에 접근하는 것을 예방하도록 도와준다.
- 시스템은 파일의 N번째 레코드에 대한 요청을 어떻게 처리할까? 논리적 레코드 길이가 L이라 가정할 때, N번째 레코드에 대한 요청은 그 파일 내부의 L*(N)의 위치로부터 L 바이트에 대한 요청이 된다. 논리적 레코드는 고정된 길이이기 때문에, 레코드를 읽고 쓰고 삭제하는 것이 쉽다.
- 현재 위치를 가리키는 변수 cp를 잘 유지함으로써 직접 접근 파일을 통해 순차 접근을 쉽게 구현할 수 있다.
기타 접근 방법 (Other Access Methods)
- 다른 접근 방법들은 직접 접근 방법을 기반으로 한다. 이 방법들은 일반적으로 파일의 색인(index)을 사용한다.
- 파일 안에서 레코드를 찾기 위해, 우리는 먼저 그 색인을 찾아 이에 대응하는 포인터를 얻는다. 이후 이 포인터를 사용하여 파일에 직접 접근하고 원하는 레코드를 찾는다. 즉, 파일에서 레코드를 찾기 위한 목적으로 색인을 먼저 찾고 이에 대응되는 포인터를 얻은 후, 이를 통해 파일에 직접 접근하여 원하는 레코드를 얻는 방식이다.
- 대용량 파일의 경우에 색인 파일 그 자체도 매우 커져서 메모리에 상주할 수 있다. 이에 대한 해결책으로 색인 파일에 대한 또 다른 색인을 생성하는 것이다. 일차 색인 파일은 이차 색인 파일의 포인터를 지니고 있는데, 이는 실제 데이터 항목들을 가리킨다.
참고자료
Operating System Concepts Tenth Edition
https://m.blog.naver.com/jevida/140192871986
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/11_FileSystemInterface.html
'컴퓨터과학 > 운영체제' 카테고리의 다른 글
[운영체제] 파일의 개념 (0) | 2021.12.28 |
---|---|
[운영체제] The Banker's Algorithm (1) | 2021.12.07 |
[운영체제] Deadlock (0) | 2021.12.06 |
[운영체제] 동기화 문제들(The Dining-Philosophers Problem) (0) | 2021.12.06 |
[운영체제] 동기화 관련 여러 문제(The Bounded-Buffer Problem, The Reader-Writer Problem) (0) | 2021.12.05 |
Comments