728x90

분류 전체보기 141

파일 시스템

* 혼자공부하는 컴퓨터구조 운영체제를 공부하였습니다. 파일시스템이란 파일과 디렉터리를 보조기억장치에 할당하고 접근하는 방법이다. 대표적으로 FAT 파일 시스템과 유닉스 파일 시스템이 있다. 막 공장에서 생산되어 한번도 사용된 적이 없는 하드디스크 or SSD가 있다면 파티셔닝과 포매팅을 하기 전까지는 사용할 수 없다. * 파티셔닝 - 저장장치의 논리적인 영역을 구획하는 작업 - 보조기억장치의 영역을 나누는 작업이다. - 파티셔닝을 통해 나눠진 영역 하나를 파티션이라고 한다. * 포매팅 - 어떤 방식으로 파일을 저장하고 관리할지 결정하는 작업이다. - 파일 시스템을 설정하여 새로운 데이터를 쓸 준비를 하는 작업. - 물리적 포매팅(공장 수행)과 논리적 포매팅(파일 시스템 생성)이 있다. 옛날에는 USB를 ..

파일과 디렉터리

파일 시스템 - 일상적으로 사용하는 파일과 디렉터리는 모두 운영체제의 파일시스템이라고 하는 프로그램이 관리해주는 대상이다. - 한 컴퓨터 내에 여러개의 파일 시스템을 사용할 수 있다. - 기본적으로 데이터의 관점으로 보면 보조기억장치에 저장된 데이터 덩어리일 뿐이다. - 운영체제가 일목요연하게 관리해주는것이다. 파일과 디렉터리 1) 파일 - 보조기억장치에 저장된 관련 정보의 집합, 의미있고 관련 있는 정보를 모은 논리적 단위 - 파일을 이루는 정보 -> 파일을 실행하기 위한 정보 -> 부가정보 ㄱ) 속성 (유형, 크기, 보호, 생성날짜, 마지막 접근 날짜, 수정날짜, 생성자, 소유자, 위치) ㄴ) 메타데이터: 위 속성들의 데이터 -> 파일 연산을 위한 시스템 호출 (파일을 다루는 모든 작업들은 전부 운영..

계층적 페이징

* 혼자공부하는 컴퓨터구조 및 운영체제 책을 공부하였습니다. 프로세스를 이루는 모든 페이지 테이블 엔트리를 메모리에 두는것은 큰 낭비이다. 프로세스를 이루는 모든 페이지 테이블 엔트리를 항상 메모리에 유지하지 않게 할 방법이 필요하다. 계층적 페이징은 페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식이다. -> 페이지 테이블을 여러 페이지로 쪼개고 이 페이지를 가리키는 페이지 테이블(Outer 페이지 테이블)을 만들어 관리하는 방식 -> Outer 페이지 테이블은 CPU와 가장 가까이 위치한 페이지 테이블로 항상 메모리에 유지한다. [바깥 페이지 번호 / 안쪽 페이지 번호 / 변위] 의 구조를 가진다. 1. 바깥 페이지 번호를 통해 페이지 테이블의 페이지를 찾고, 2. 페이지 테이블의 페이지를 ..

페이징에 관한 내용 _ 쓰기시 복사

* 혼자공부하는 컴퓨터 구조와 운영체제 책을 공부하였습니다. 이론적인 fork() - 부모 프로세스의 복제본이 자식 프로세스로써 적재되는것. - 프로세스는 기본적으로 자원을 공유하지 않는다. -> 부모 프로세스가 적재된 별도의 공간에 자식 프로세스가 통째로 복제되어 적재 -> 단점: 자식 프로세스 생성하는 시간이 지연, 동일한 내용이 중복해서 적재되므로 불필요하게 메모리 낭비 이를 해결한 것 : 쓰기 시 복사 - 부모 프로세스와 동일한 자식 프로세스가 복제되어 생성된 후 - 자식 프로세스는 부모 프로세스와 동일한 프레임을 가리킨다. -> 불필요한 메모리 적재가 없어진다. / 어떠한 쓰기 작업도 없다면 이 상태 유지 - 부모 프로세스와 자식 프로세스 둘 중 하나가 페이지 쓰기 작업 수행 시 해당 페이지는 ..

페이지 교체와 프레임 할당

* 혼자공부하는 컴퓨터 구조와 운영체제 책을 공부하였습니다. 물리적으로 메모리는 크기가 한정되어있다. 페이징을 통해 물리적인 메모리 크기보다 더 큰 프로세스를 실행 할 수 있지만, 결과적으로 한계가 있을수밖에 없다. 두가지 문제를 해결해야한다. 1) 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고 2) 프로세스들에게 적절한 수의 프레임을 할당해야 한다. 요구페이징 (demand paging) - 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법 - 요구되는 페이지만 적재되는 기법이다. 1) 기본양상 - CPU가 특정 페이지에 접근하는 명령어를 실행한다. - 해당 페이지가 현재 메모리에 있을 경우(유효 비트가 1일 경우) CPU는 페이지가 적재된 프레임에 접근한다..

외부단편화 해결방식

1. 메모리 압축 - 여기 저기 흩어져 있는 빈 공간들을 하나로 모으는 방식이다. - 프로세스를 적당시 재배치 시켜 흩어져있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법 단점: 합치고 재배치하는 과정에서 많은 오버헤드를 야기하며, 프로세스들은 자신이 할 일을 제대로 할 수가 없다. 2번 3번은 가상메모리 관리기법이다. 2. 페이징 - 외부단편화의 근본적인 문제를 해결하는 방식이다. (근본문제점: 프로세스들이 각기 다른 크리를 가졌기 때문에, 빈공간에 아무것이나 넣을수가 없다.) - 따라서 페이징은 프로세스를 일정 크기로 자르고, 이를 메모리에 불연속적으로 할당하는것이다. 1) 페이징 : 프로세스의 논리주소공간을 페이지(page)라는 단위로 자르고, 메모리의 물리주소공간을 프레임(frame)이라..

프로세스 연속 메모리 할당 (feat 외부 단편화)

연속 메모리 할당 : 프로세스들이 메모리 내에서 연속적으로 할당되는 것을 말한다. 페이징과 연관된 내용이다. 스와핑 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역 (스왑 영역)으로 쫒아내고, 그 빈자리에 새 프로세스를 적재한다. 장점 : 많은 프로세스들을 적재하여 사용할 수 있다. 연속 메모리 할당, 할당방식 3가지 프로세스는 실행되기 위해 메모리의 빈 공간에 할당되어야 한다. 1) 최초 적합 - 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치 - First -fit - 검색 최소화, 빠른 할당 2) 최적 적합 - 운영체제가 빈 공간을 모두 검색한 뒤, 적재 가능한 가장 작은 공간에 프로세스를 배치 - best -fit 3) 최악 ..

프로세스 교착상태

교착상태란 두개 이상의 프로세스가 각자 갖고있는 각각의 자원들을 그저 기다리기만 하여 어떤 프로세스도 실행되지 못하는 상태를 말한다. 교착상태가 발생하는 원인 (4가지가 모두 해당될때 교착상태가 발생한다.) 1. 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태 2. 점유와 대기 : 자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태 3. 비선점 : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태 4. 원형 대기 : 프로세스들이 원의 형태로 자원을 대기하는 상태 교착상태 해결방법 1. 예방 1) 교착 상태 발생 원인 4가지중 하나를 없앤다. - 상호배제 없애기 : 모든 자원을 공유 가능하게 만든다? -> 불가능 - 점유와 대기 없애기 : 특..

프로세스 동기화

* 혼자공부하는 컴퓨터 구조 운영체제를 공부한내용을 정리하였습니다. - 동시다발적으로 실행되는 프로세스들은 서로 협력하며 영향을 주고 받는다. - 이 과정에서 자원의 일관성을 보장해야한다. - 프로세스와 쓰레드 둘다 동기화의 대상이다. (편의상 프로세스 동기화로 통일) 동기화의 의미 - 프로세스들의 수행 시기를 맞추는것을 말한다. - 실행 순서 제어 - 상호 배제 : 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하게 하기 - 실행의 문맥을 갖는 모든 대상은 동기화 대상이기에, 스레드도 동기화 대상 실행순서제어를 위한 동기화 : Reader Writer Problem - 읽기는 쓰여진 내용이 있어야 가능하다. 즉, 실행순서가 있다는것에서 발생하는 문제 상호배제를 위한 동기화 : Bank Accou..

[책] 객체지향의 사실과 오해

객체지향으로 향하는 걸음 1. 클래스가 아니라 객체를 바라보는것에서 시작 2. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보기 3. 협력에 참여하는 객체들에게 얼마나 적절한 역할과 책임을 부여할 수 있는가 4. 프로그래밍 언어라는 틀에 흐트러짐 없이 담아낼 수 있는 기술을 익히는것 1장. 협력하는 객체들의 공동체 - 객체지향 패러다임의 핵심은 자율적인 객체들의 협력 2장. 이상한 나라의 객체 - 객체란 무엇인가 (객체는 상태와 행동, 식별자를 가진 존재) 3장. 타입과 추상화 - 소프트웨어 개발의 가장 중요한 개념 추상화 - 타입의 개념을 이해하고나면 객체를 구현하기 위해 클래스를 사용하는 이유를 이해하기 쉽다. 4장. 역할, 책임, 협력 - 객체 지향 설계의 가장 ..

기타 2023.11.19
728x90