공부/컴퓨터구조, 운영체제 15

15장 파일 시스템

파일 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합 속성(메타데이터) 파일관련 부가 정보 파일 형식, 위치, 크기 등 파일 연산을 위한 시스템 호출 종류 파일 생성 파일 삭제 파일 열기 파일 닫기 파일 읽기 파일 쓰기 디렉터리(폴더) 파일들을 관리하기 위해 존재 1단계 디렉터리 하나의 디렉터리만 존재 트리 구조 디렉터리 여러 계층을 가진 디렉터리 구조 최상위 디렉터리를 루트 디렉터리라고 부른다. 절대 경로 루트로 부터 자기 자신까지 이르는 고유한 경로 상대 경로 현재 디렉터리부터 시작하는 경로 디렉터리 연산을 위한 시스템 호출 종류 디렉터리 생성 디렉터리 삭제 디렉터리 열기 디렉터리 닫기 디렉터리 읽기 디렉터리 엔트리 디렉터리에 담겨 있는 대상과 관련된 정보를 담고 있는데 이를 테이..

14장 가상 메모리

연속 메모리 할당 스와핑 메모리 상 빈 공간에 또 다른 프로세스를 적제하여 실행하는 방식 스왑 영역 : 프로세스들이 쫓겨나는 보조기억장치의 일우 영역 스왑 아웃 : 현재 실행되지 않은 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨지는 것 메모리 할당 최초 적합 운영체제가 메모리 내 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방법 최적 적합 운영체제가 빈 공간을 모두 검색한 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방법 최악 적합 운영체제가 빈 공간을 모두 검색한 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방법 외부 단편화 ..

13장 교착상태

교착 상태 식사하는 철학자 문제 동그란 원탁에 다섯명의 철하자가 앉아있다. 이 철학자들 앞에는 음식이 있고 철학자 사이마다 식사에 필요한 포크고 있다. 계속 생각하다가 왼쪽 포크가 사용가능하면 집어든다. 계속 생각하다가 오른쪽 포크가 사용가능하면 집어든다 왼쪽가 오른쪽 포크가 모드 집어들면 정해신 시간동안 식사한다. 식사가 끝나면 오른쪽 포크는 내려 놓는다. 오른쪽 포크를 내려 놓은 뒤 왼쪽 포크를 내려 놓는다. 다시 1번부터 반복한다. 문제 한두명의 철학자가 음식을 먹을때는 상관이 없다. 하지만 모든 철학자가 동시에 포크를 집으면 더 이상 집을 포크가 없어 아무도 식사를 할 수 없다. 이를 교착 상태라 한다. 자원 할당 그래프 어떤 프로세스가 어떤 자원을 사용하고 있으며 또 다른 프로세스가 어떤 자원을..

12장 프로세스 동기화

프로세스 동기화(Synchronization) 프로세스들 사이의 수행 시기를 맞추는 것 실행 순서제어를 위한 동기화 프로세스의 완료 순서가 있어 올바른 순서대로 실행하게 하는 것 상호 배제를 위한 동기화 공유가 불가능한 자원의 동시 사용을 피하기 위함 생산자와 소비자 문제 생산자와 소비자는 총합이라는 데이터를 공유 생산자는 버퍼에 물건을 넣은 후 물건의 총합에서 변수 1을 증가 소비자는 버퍼에 물건을 빼낸 후 물건의 총합에서 변수 1을 감소 이 두 개를 동시에 10만번 실행하면 공유자원인 총합을 사용하는 과정에서 충돌이 일어나 올바른 총합이 나오지 않음 공유 자원 생산자와 소비자 문제에서 총합은 공유 자원에 해당한다. 임계 구역 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역을 말함 레이스 컨..

11장 CPU 스케줄링

CPU 스케줄링 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것 프로세스 우선순위 입출력 집중 프로세스 비디오 재생이나 디스크 백업 작업을 담당 실행 상태보다 입출력을 위한 대기상태에 더 많이 머무른다. CPU 집중 프로세스 복잡한 수학연산, 컴파일, 그래픽 처리 담당 대기 상태보다 실행 상태에 더 많이 머무른다. 스케줄링 큐 운영체제가 메모리로 적제되고 싶은 프로세스들을 큐에 삽입하여 줄을 세운다. 스케줄링 큐는 꼭 큐형태는 아니다. 준비큐 CPU를 이용하고 싶은 프로세스들이 서는 줄 대기 큐 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄 선점형 스케줄링 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 ..

10장 프로세스와 스레드

프로세스 포그라운드 프로세스 사용자가 보는 앞에서 실행되는 프로세스 백그라운드 프로세스 사용자가 안보는 곳에서 실행되는 프로세스 유닉스에서는 데몬, 윈도우에서는 서비스라고 부른다. 프로세스 제어 블록(PCB) 프로세스와 관련된 정보를 저장하는 자료 구조 프로세스 생성 시 만들어지고 실행이 끝나면 폐기된다. PCB 정보 프로세스 ID(PID) 특정 프로세스를 식별하기 위해 부여하는 고유한 번호 레지스터 값 프로세스는 한번에 자신의 프로그램을 끝낼 수도 중간에 멈출 수도 있다. 그렇기에 자신의 차례가 되면 이전까지 사용했던 프로그램 카운터를 비롯한 레지스터 값들이 담긴다. 프로세스 상태 프로세스의 사용 목적(입출력장치 사용, CPU사용 등)이 저장된다. CPU 스케줄링 정보 프로세스가 언제 어떤 순서로 CP..

9장 운영체제 시작하기

운영체제 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램 컴퓨퍼가 부팅될 때 메모리 내 커널 영역 공간에 따로 적재되어 실행 커널 영역을 제외한 나머지 영역은 사용자 영역으로 사용자가 이용하는 응용 프로그램공간 사용자 영역의 메모리 자원 관리 응용프로그램들의 CPU자원 관리 커널 운영체제에서 가장 핵심적인 서비스 제공 자원 접근하고 조작 기능 프로그램을 안전하게 실행되게 하는 기능커널은 아니지만 컴퓨터와 상호작용하는 통로 GUI 윈도우 바탕화면과 같이 사용자와 컴퓨터가 상호작용 CLI 커멘드 라인으로 컴퓨터와 상호작용 이중모드 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식 사용자 모드 운영체제 서비스를 제공받을 수 없는 실행 모드 ..

8장 입출력장치

장치 컨트롤러 입출력 장치를 다루기 까다로운 이유 입출력장치에 종류가 많다.(비규격화) 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다.(전송률의 차이)결론 : 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러를 통해 연결된다. 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신 중개 오류 검출 데이터 버퍼링 버퍼링 전송률이 높은 장치와 낮은 장치 사이에 주고 받는 데이터를 버퍼에 임시저장하여 전송률을 비슷하게 맞추는 방법 내부 구조 데이터 레지스터 CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터 버퍼링할 때 임시 저장하는 곳 최근 주고 받는 데이터가 많은 입출력장치에서는 RAM을 사용하기도 한다.상태 레지스터 입출력장치의 입출력 작업 준비, 완료,..

7장 보조기억장치

하드디스크(자기 디스크) 자기적인 방식으로 데이터를 저장하는 보조기억장치 플래터라는 동그란 원판에 데이터가 저장된다. N극과 S극을 저장하는데 이는 0과 1의 역할을 수행한다. 내부 구조 스핀들 : 플래터를 회전시키는 구성 요소 RPM : 스핀들이 플래터를 돌리는 분당 회전수 단위 헤드 : 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소 디스크 암 : 헤드를 원하는 위치로 이동시키는 장치 트랙 : 플래터를 여러 동심원으로 나눴을 때 그 중 하나의 원 섹터 : 트랙의 한 조각 블록 : 하나 이상의 섹터를 묶은 것 실린더 : 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위 데이터는 하드디스크의 섹터, 트랙, 실린더에 저장된다. 저장된 데이터에 접근하는 과정 탐색 시간 : 접근하려는..

6장 메모리와 캐시 메모리

RAM RAM에는 실행할 프로그램의 명령어와 데이터가 저장된다. 전원을 끄면 저장된 명령어와 데이터가 모두 날라간다. 이러한 저장 장치를 휘발성 저장 장치라고 한다. 반대로 전원이 꺼져도 데이터가 날라가지 않는 장치를 비휘발성 저장 장치라고 한다. 하드디스크나 SSD등이 대표적으로 있다. 비휘발성 저장 장치는 CPU에 직접접으로 접근을 못하므로 보관할 대상을 저장하고 휘발성 저장 장치에는 실행할 대상을 저장한다. RAM의 용량과 성능 RAM의 용량이 크면 보조기억장치에서 실행할 프로그램을 가져오는 일이 줄어든다. 그렇다면 용량이 크면 프로그램을 가져오는 일이 줄기 때문에 성능이 용량에 비례해서 빨라질까? 정답은 그렇지 않다. RAM과 보조기억장치간 이동하는 속도는 같기 때문에 무한정으로 빨라지지 않는다...