목록3학년 1학기/운영체제 (OS) (48)
오래 못 할 짓 하지 않기

파티셔닝 / 포매팅 : 파일 시스템을 통해 파일/디렉터리에 접근하기 위해 필요한 기술 - 파티셔닝 : 저장 장치의 논리적인 영역을 구획하는 작업 - 포매팅 : 1) 파일 시스템을 설정 2) 어떤 방식으로 파일을 관리할지 결정 / 새로운 데이터를 쓸 준비하는 작업 예시 더보기 파일 할당 방법 - OS 는 파일/디렉터리를 블록 단위로 읽고 쓴다. ▶ 하나의 파일이 보조기억장치에 저장될 때는 여러 블록에 걸쳐 저장된다. ● 연속 할당 : 보조기억 장치 내 연속적인 블록에 파일 할당 파일 a는 블록 3개에 걸쳐서 저장될 크기... - 디렉터리 엔트리 : [ 파일 이름 ] + [ 첫 번째 블록 주소 ] + [ 블록 단위 길이 ] 명시 ● 단점 1. 외부 단편화 발생. 우선 쭉 나열함. 만약 파일 D,F가 사라진다..

파일 시스템 (file system) - 파일과 디렉터리를 관리하는 운영체제 내의 프로그램 ● 파일 - 보조기억장치에 저장된 관련 정보의 집합 - 관련있는 정보를 모아둔 논리적 단위 [ 파일을 이루는 정보 ] : 파일을 실행하기 위한 정보 + 부가 정보 (= 속성, 메타 데이터) ● 유형 = 확장자로 파악가능 파일과 관련된 어떠한 일을 할 때는 임의로 할 수 없으며, OS의 시스템 호출을 통해 부탁을 해야한다. ● 디렉터리(폴더) - 보조기억장치에 저장된 관련 정보의 집합 - 관련있는 정보를 모아둔 논리적 단위 ● 경로 - 디렉터리를 이용해 파일/디렉터리의 위치, 이름까지 특정 지을 수 있는 정보 ※ 절대 경로 / 상대 경로 디렉터리 엔트리 OS에서의 디렉터리 = 특별한 형태의 파일 = 포함된 정보가 조..

페이징의 이점 1. 외부 단편화 문제 해결 - 이건 지금까지 많이 배웠음 2. 프로세스 간 페이지를 공유 가능하다. - 쓰기 시 복사 [ 배경 ] 이론적인 fork ▶ 부모 프로세스가 적재된 별도의 공간에 자식 프로세스가 통째로 복제되어 적재 하는 이유 : 프로세스는 기본적으로 자원을 공유하지 않기 때문에, 공유의 기능을 복제로 대신한다. (나눠 쓸 바엔 하나 더 만든다) [ 단점 ] 1. 자식 프로세스를 만드는데 시간이 오래 걸릴 수가 있다. 2. 중복되는 내용으로 2개 (혹은 그 이상)의 메모리가 사용되므로, 비효율적이다. 이런 단점을 해결하기 위해 사용하는 것이 쓰기 시 복사이다. ● 쓰기 시 복사 : 프로세스가 복제되어 생성되는 것까지는 같다. 하지만 자식 프로세스는 부모 프로세스와 동일한 프레임..

물리 메모리는 크기가 한정되어있다. 따라서 OS가 메모리를 할당하는 것에 대해서 해야할 일이 2가지가 있다. 1. 기존 적재된 불필요한 페이지를 선별 → 보조기억장치로 보낸다. = 페이지 교체 2. 프로세스들에게 적절한 프레임 할당 [ 요구 페이징 ] 이란? ' 요구되는 페이지만 메모리에 적재 '하는 기법 ( * 처음부터 모든 페이지를 적재하지 않고, 필요한 페이지만을 적재하는 기법 ) 요구 페이징 작동 방식 → 유효 비트를 사용하여 적재 유무를 판단한다. ● 요구 페이징이 안정적으로 작동하기 위해 해결해야 하는 문제 1. 페이지 교체 2. 프레임 할당 페이지 교체 (알고리즘) 페이지를 적재하다보면 언젠가는 메모리가 가득 찬다. ▶ 적재되어 있는 페이지 중에서 일부를 보조기억장치로 보내야 함. ... 어..

연속 메모리 할당의 문제점 1. 외부 단편화 2. 물리 메모리보다 큰 프로세스 실행 X 가상 메모리 : 물리 메모리보다 훨씬 큰 프로세스를 실행할 수 있게 하는 기술 1. Paging 2. Segmentation 우린 페이징을 배울 거시다 페이징 외부 단편화의 이유 : 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당되어서 ▶ 모든 크기가 같았으면 발생하지 않음 = 그럼 같게 해주자 ● 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고 [ 프로세스 공간 → 페이지 ] ● 메모리의 물리 주소 공간을 프레임이(frame)라는 페이지와 동일,일정한 단위로 자른 뒤 [ 메모리의 공간 → 프레임 ] ● 그렇게 나온 페이지를 프레임에 할당하는 가상 메모리 관리 기법 + 논리 주소 공간 = C..

연속 메모리 할당: 프로세스에 연속적인 메모리 공간을 할당메모리에 프로세스 A의 크기만큼 할당 → 그 다음 B만큼 할당... 공간을 여러 개로 나누지 않고, 물리적 메모리 한 곳에 연속적으로 = 차곡차곡 적재하는 방식 스와핑: 현재 사용되지 않는 프로세스들 → 보조 기억 장치의 일부 영역 ( = 스왑 영역 ) 그렇게 생겨난 빈 공간에 새로운 프로세스들 적재 하는 것 - 안 쓰는 것들은 메모리에 빼두고, 지금 쓸 것들만 메모리에 두기 때문에 효율적인 관리가 가능하다. * 안 쓰는 거 쫓아내는 거 = 스왑 아웃 / 쓸 거 메모리에 데려오는 거 = 스왑 인 Case)[ 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 ] 일 때( 적재 순서 A - B - C - D )메모리에 프로세스..

교착 상태 해결 방법 3가지 1. 예방 : 애초에 교착 상태가 발생하지 않도록 : 교착 상태 발생 조건 중 하나를 없애버리기 ( 상호 배제, 점유와 대기, 비선점 , 원형 대기 ) - 상호 배제를 없애기 : 모든 자원을 공유하게 만든다? → 현실적으로 불가능 - 점유와 대기 없애기 : 특정 프로세스에 자원을 모두 할당 or 아예 할당 X 인 방식으로 배분 → 자원의 활용률을 떨어뜨린다. - 비선점 없애기 : 선점이 가능한 자원 (ex:CPU)에 한해 효과적 하지만 모든 자원이 선점 가능한 것은 아니다. ex) 프린터 - 원형 대기 조건 없애기 : = 더보기 - 한계점 1) 모든 자원에 번호를 붙이는 것은 어렵다. 2) 어떤 자원에 어떤 번호를 붙이냐에 따라 활용률이 달라진다. [ 교착 상태 예방 : 결론..

포크 = 실행에 필요한 자원 철학자 = 프로세스 식사 = 실행 서로가 점거하는 자원을 서로가 기다리고 있으면 어떠한 프로세스도 실행될 수 없다. 교착 상태 ( Dead Lock ) : 일어나지 않을 사건을 기다리면서 진행(실행)이 멈춰 버리는 현상 서로의 할당이 해제될 때까지 무작정 기다림 ● 해결하기 위해서... 1. 교착 상태가 발생했을 때의 상황을 정확히 표현해보기 → 자원 할당 그래프 : 교착 상태 발생 조건 파악 가능 - 어떤 프로세스가 어떤 자원을 할당 받아 사용 중인지 확인 가능 - 어떤 프로세스가 어떤 자원을 기다리는 중인지 확인 가능 식사하는 철학자 예시의 자원 할당 그래프는 아래와 같다 교착 상태가 일어난 그래프 = 원의 형태를 띄고있다. ● 교착 상태가 일어나는 근본적인 이유 1. 교..

프로세스 동기화 방법에는 1. 상호 배제 2. 실행 순서 제어 이 두 가지를 이용하여 동기화 하는 기법들을 알아볼 거시다 뮤텍스 락 상호 배제를 이용한 동기화 도구 = 자물쇠 역할 탈의실 : 임계 구역 ( in 자원 ) 프로세스 : 손님 탈의실이 잠겨있다면, 사람이 있다는 것이다. ● 구현법 구성 : 전역 변수 하나 + 함수 두 개 - 자물쇠 역할 : 변수 lock (boolean) - 임계 구역을 잠그는 역할 : acquire 함수 → 작업 시작할 때 잠근다 : 프로세스가 임계 구역에 진입하기 전에 호출 if 임계 구역이 잠겨있다면 ▶ (임계 구역이 열릴 때까지) 임계 구역을 반복적으로 확인 if 임계 구역이 열려있다면 ▶ 임계 구역을 잠그기 - 임계 구역을 잠금을 해제하는 역할 : release 함수..

[ 배경 ] 프로세스들을 동시다발적으로 실행되며 , 그 과정에서 서로 협력하며 영향을 주고 받는다. 그 과정에서 자원의 일관성도 보장해야한다. 이를 위해 필요한 것이 프로세스와 스레드의 동기화 이다. 더보기 * 실행의 문맥을 갖는 모든 대상 = 동기화의 대상 따라서 스레드도 동기화의 대상이다. 하지만 편의상 그냥 프로세스 하나만 명칭으로 붙인다. 동기화 : 프로세스들의 수행 시기를 맞추는 것 1. 실행 순서 제어를 위한 동기화 : 프로세스를 올바른 순서대로 실행하기 예) reader writer problem - Writer : Book.txt 파일에 값을 저장하는 프로세스 - Reader : Book.txt 파일에 저장된 값을 읽어들이는 프로세스 → 이 두 프로세스는 무작정 실행되어서는 안 된다. 실행..