CS 전공/OS 12

[운영체제] 12. 파일 시스템

1. 저장장치1) 파일1. 사용자나 응용 프로그램의 관점에서 : 정보를 저장하고 관리하는 논리적인 단위2. 컴퓨터 시스템의 관점에서 : 정보를 저장하는 컨테이너, 0과 1의 데이터 덩어리 운영체제의 중요한 역할 중 파일 시스템도 중요하다.- 파일 생성, 기록, 읽기 등 모든 과정을 통제한다.- 응용 프로그램은 운영체제 모르게 파일 다루기가 불가능하다. 파일은 어디에 저장되나?1) 자기장 기반하드디스크, 플로피 디스크자기 테이프2) 반도체 기반SSDUSB, 플래시 메모리3) 광학CD, DVD2) 자기장 기반 방식- 종류에는 자기 테이프, 플로피 디스크, 하드 디스크 등이 있다고 하였다.- 저장 매체 위에 자기장에 반응하는 물질을 발라두고 헤드를 이용해 특정 위치의 값을 읽어온다.- 자기장이 변화하면 유도 ..

CS 전공/OS 2024.06.24

[운영체제] 11. Demand Paging

1. 물리 메모리와 가상 메모리1) 주소 공간과 물리 메모리컴퓨터에 설치할 수 있는 물리 메모리에도 한계가 있다. -> 물리 메모리는 CPU의 주소 버스 크기에 달려 있기 때문이다. 32비트 CPU의 최대 물리 메모리의 양은 4GB, 64비트 CPU의 최대 물리 메모리 양은 16EB이다. 하지만 컴퓨터의 실제 물리 메모리는 CPU의 최대 메모리에 미치지 못한다. 비용이 많이 들기 때문이다. 현재 대부분의 컴퓨터의 물리 메모리 양은 8GB ~ 32GB이다. 또한, 프로세스는 자신이 최대 용량을 독점한다고 생각한다. 이러면 어떠한 문제가 발생할까?2) 물리 메모리의 한계물리 메모리의 한계에서 얻을 수 있는 질문은 다음과 같다.1) 설치된 물리 메모리보다 더 큰 프로세스를 실행시킬 수 있는가?2) 프로세스들을..

CS 전공/OS 2024.06.23

[운영체제] 10. 페이징

1. 페이징의 개요1) 연속 메모리와 Segmentation 기법의 단점- 프로그램이 한 두 개 이상이면 문제가 발생Segment의 크기가 클 경우 메모리 할당이 가면 갈수록 어려워진다.관리 자체가 더 힘들다 -> 검색 효율이 저하되며 메모리 운용 속도도 저하된다.-> 이와 같은 문제로 페이징 기법이 등장했다.2) 페이징이란?- 고정 - 분할 방식을 이용한 가상 메모리 관리 기법이다.- 프로세스의 주소 공간을 0번지부터 동일한 크기의 페이지로 나눈다.- 물리 메모리도 역시 0번지부터 페이지 크기로 나누고 프레임이라 부른다.- 페이지의 크기는 주로 4KB이다.- 페이지 테이블은 각 페이지에 대해 페이지 번호와 프레임 번호를 1:1로 저장하는 테이블이다.3) 페이징의 장점1. 용이한 구현 : 고정 크기로 단..

CS 전공/OS 2024.06.23

[운영체제] 9. 메모리 관리

그동안 운영체제를 CPU의 관점으로 봐왔다. 이번에는 프로그램을 관리하는 장소인 메모리에 대해 알아볼 시간이다.1. 메모리 관리1) 메모리 관리가 필요한 이유1. 메모리는 공유 자원이기 때문이다.- 여러 프로세스 사이에 메모리가 공유되고 각 프로세스에게 물리 메모리를 할당한다.2. 메모리를 보호해야 한다.- 프로세스의 독립된 메모리 공간을 보장하고 다른 프로세스로부터 메모리 공간을 보호해야 한다.- 사용자 코드로부터 커널 공간을 보호해야 한다.3. 메모리 용량 한계를 극복해야 한다.- 설치된 무리 메모리보다 큰 프로세스의 지원이 필요할 때가 있다.4. 메모리의 효율성을 증대시킬 수 있다.- 가능한 많은 개수의 프로세스를 한 번에 실행시키는 것이 좋다. 또한, 프로세스 당 최소한의 메모리로 할당한다.2) ..

CS 전공/OS 2024.06.23

[운영체제] 8. 교착상태

1. 교착상태1) 교착상태의 정의자원을 소유한 채, 모두 상대방이 소유한 자원을 기다리면서 무한 대기에 빠지는 상태이다. 교착상태하면 항상 나오는 문제로 식사하는 철학자 문제가 있다.2. 식사하는 철학자 문제1) 식사하는 철학자 문제조건은 다음과 같다.1. 5명의 철학자가 원탁에서 식사한다.2. 자리마다 스파게티 1개와 양 옆에 포크가 있다.3. 식사를 하기 위해서는 양 옆의 포크가 동시에 들려야 한다.4. 왼쪽 포크를 먼저 들고 다음 오른쪽 포크를 드는 순서이다. 저 조건이라면 누구 한 명은 식사를 할 수 없다..! 그럼 왜 못하는 걸까..? 원인 : 환형 요청/대기 : 원으로 앉아 있기에 스스로 해체 불가능하다.해결 : 원형 상태로 안 만들면 되지!2) 컴퓨터 시스템에서의 교착 상태식사하는 철학자의 ..

CS 전공/OS 2024.06.23

[운영체제] 7. 프로세스와 쓰레드의 동기화 (Synchronization)

1. IPC (Inter - Process Communication) 일단 프로세스 간의 통신을 봐봅시다. 원래 원칙상으로는 프로세스끼리 통신은 힘들다. 프로세스끼리의 간섭을 없애기 위해 서로의 영역을 침범하지 않기 때문이다. 따라서, 쓰레드 간의 통신을 이용하여 프로세스끼리 통신을 한다. 하지만 프로세스끼리 통신은 필수이다. 당연하다. 우리가 컴퓨터 프로그램을 쓰면서 크롬만 켜지는 않을 것이다. 카카오톡도 켜고 동영상 강의도 틀고 op.gg도 켜고  아무튼 다양한 프로그램을 쓰기 때문이다. 또 어떤 컴퓨터 프로그램은 여러 프로세스로 구성이 되기에 프로세스간 통신은 필수이다. 그렇다면 프로세스의 종류는 뭐가 있을까? 1) IPC의 종류1. 프로레스 내부 데이터 통신 (== 쓰레드)- 하나의 프로세스 내에..

CS 전공/OS 2024.06.23

[운영체제] 6. 스케줄링

길고 긴 운영체제를 보고 드디어 절반이 왔다. 절반까지 왔으니 요약으로 먼저 시작하겠다! 0. 개요부터 쓰레드까지 1. 운영체제의 개요 - 운영체제가 하는 일: 컴퓨터라는 하드웨어을 잘 쓰기 위한 것 (효율적, 안정적, 확장적, 편리함) - 그런데, 컴퓨터는 한정된 자원을 여럿이서 사용해야한다. (다중 프로그래밍 방식을 통해) - 이를 위해 프로세스, 메모리, 파일, 장치, 네트워크, 보안 기능들이 존재한다. 2. 프로세스와 쓰레드 - 위의 기능을 수행하기 위해 나온 개념이 프로세스와 쓰레드이다. - 폰 노이만 구조에서 프로그램은 프로세스가 되어야 한다. (즉, 메모리에 적재되어야 한다.) - 이것을 잘하기 위한 방법 : 프로세스 생명 주기와 Context Switching, TCB - 메모리에 올릴 때..

CS 전공/OS 2024.04.21

[운영체제] 5. 쓰레드

1. 쓰레드 개요 1. 쓰레드가 나오게 된 계기 쓰레드가 나오게 된 계기는 프로세스의 문제점에 있다. 일단 전 게시물에 프로세스 생성 과정은 상당히 복잡하다고 했다. 메모리를 할당한 뒤 메모리를 fork()해주고 PCB를 할당한 다음에 준비 상태 -> 실행 상태 -> exec() 등등 상당히 복잡한 과정을 거치므로 생성의 오버헤드가 큰 편이다. 또한, 한 프로세스에서 다른 프로세스로 옮겨가는 과정인 Context Switching 과정도 오버헤드가 크다. 우선 기존에 처리하던 프로세스의 정보들을 다 저장을 한 뒤 새로운 프로세스를 실행한 뒤 다시 복귀하는 과정에서도 그 과정을 한 번 더 반복해야 한다. 마지막으로, 프로세스 간의 통신이 어렵다. 프로세스는 완전히 독립된 주소 공간을 가지고 있기에 개입이 ..

CS 전공/OS 2024.04.20

[운영체제] 4. 프로세스 (2)

지난 포스트에 이어서..! 1. 프로세스의 생성과 복사 1. 프로세스 생성 ▶ 프로세스는 언제 생성되는가? 1) 시스템 부팅과정에서 필요한 프로세스 생성 2) 사용자의 로그인 후 사용자의 대화를 위한 프로세스 생성 3) 새로운 프로세스를 생성하도록 하는 사용자의 명령 4) 배치 작업 실행 시 5) 사용자의 응용 프로그램이 시스템 호출로 새 프로세스 생성 하지만, 메모리에 올라갔다고 단순히 프로세스가 아니다! → 그냥 메모리에만 올라와 있는 것이 아닌 PCB가 존재하여 OS가 제어 가능한 형태가 되어야 한다. 2. 프로세스 생성 과정 1) 생성하려는 실행 파일의 경로를 OS에 전달 2) OS는 메모리에 프로그램을 적재 → Code 영역에 프로그램의 코드를 적재시키고, Data 영역에 전역/정적 변수들을 할..

CS 전공/OS 2024.04.18

[운영체제] 3. 프로세스 (1)

어느덧 프로세스이다. 운영체제는 정말 외워야 할 과목이 많은 것 같다. 짚고 가야할 부분 3가지 - 프로세스 개념 - 프로세스 구조 - 프로세스 생성과 계층 구조 1. 프로세스 1. 프로세스의 개념 프로세스는 실행 파일이 메모리에 로딩되어 실행되는 상태이다. 반드시 메모리에 올라가야 실행될 수 있다. 그 외에도 이렇게 정의된다. - 주기억 장치에 상주된 프로그램이 CPU에 의해 처리되는 상태 - CPU에 의해 현재 실행되고 있는 프로그램 - PCB의 존재로서 명시되는 것 - 프로세서가 할당되는 개체로서 디스패치가 가능한 단위 를 프로세스라 한다. 그럼 현대 운영체제 방식인 다중 프로그래밍 방식에서 프로세스를 살펴보자. 2. 다중 프로그래밍 방식에서의 프로세스 우리가, 컴퓨터나 휴대폰을 볼 때 한 가지 프..

CS 전공/OS 2024.04.18