운영체제
-
14. 저장 장치와 파일 시스템운영체제 2022. 8. 20. 21:27
RAID 시스템 RAID 0 하나의 데이터를 2개의 디스크에 분할하여 저장하는 방법입니다. 코드로 예시를 들어보겠습니다. int[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] disk1 = new int[10]; int[] disk2 = new int[10]; 이 같은 배열 2개가 있을 때, 번갈아 가면서 값을 저장합니다. // 짝수 번째 데이터는 disk1, // 홀수 번째 데이터는 disk2에 저장 for (int i = 0; i < 10; i++) { if (i % 2 == 0) { disk1[i] = data[i]; } else { disk2[i / 2] = data[i]; } 위 방식을 디스크에 적용시킨 것이 RAID 0이며 스트라이핑(Striping)이라..
-
13. 가상 메모리 관리운영체제 2022. 8. 20. 01:55
2022.08.18 - [운영체제] - 12. 가상 메모리 요구 페이징 이름에서 나오듯이 필요한 시점에, 필요한 크기의 페이지만 페이징하는 것입니다. 실제로 사용하는 페이지만 적재하기 때문에 비용이 절약됩니다. 어떤 페이지를 사용해야 하는지 결정하는데 오버헤드가 적습니다. 주 기억 장치의 용량이 충분하지 않아도 대용량의 프로그램을 실행 가능합니다. 페이지를 할당받기까지 대기 시간이 깁니다. 페이지에 처음 접근할 시 적재되어 있지 않아 초기 지연이 발생합니다. 기억 장치 관리가 복잡합니다. 페이지 폴트와 희생 페이지 페이지 폴트(Page Fault)란, 찾고자 하는 페이지를 물리 메모리에서 찾지 못했을 경우를 말합니다. 캐시 미스와 비슷한 개념입니다. 페이지 폴트가 일어나면 가상 메모리에서 페이지를 찾습니..
-
12. 가상 메모리운영체제 2022. 8. 18. 03:20
2022.08.17 - [운영체제] - 11. 메모리 관리 가상 메모리 가상 메모리란 오버레이 방식에서 나아가 보조 기억 장치의 일부 공간을 주 기억 장치처럼 사용하는 것입니다. 이전에도 말했듯 프로그램은 모든 함수나 변수가 골고루 쓰이지 않습니다. 프로세스가 램으로 적재되면 자주 쓰이는 부분만 캐시에 올라가죠. 가상 메모리는 이 과정이 하나 더 생긴 것이라고 보면 됩니다. 가상 메모리가 주 기억 장치의 캐시가 되는 것입니다. 가상 메모리는 물리 메모리 + 스왑 영역으로 이루어져 있습니다. 페이징 기법 페이지란 프로그램을 일정한 논리적 단위의 블록으로 나눈 것을 말합니다. 저번 시간에 고정 분할 방식에 대해서 얘기했었는데, 페이지는 공간이 아니라 프로그램을 쪼갠 것입니다. 주소 변환 가상 주소 페이지 테..
-
11. 메모리 관리운영체제 2022. 8. 17. 02:10
오버레이(Overlay) 할당받은 주 기억 장치의 공간보다 프로그램의 용량이 더 클 때 사용하는 방법입니다. 중첩이라 부르기도 합니다. 여러 조각으로 쪼개진 프로그램을 필요한 데이터만 메모리에 적재하여 사용합니다. 쉽게 말하면 필요한 부분만 가져다 쓰는 것입니다. 이 방법은 메모리의 용량이 부족하던 초기 시스템에서 주로 쓰이던 방법이었으며 현재는 가상 메모리라는 더 나은 방법을 사용하고 있습니다. 가상 메모리는 다음번에 자세하게 알아보겠습니다. 오버레이는 메모리 - 보조 기억 장치 간의 상호작용이므로 커널에게 특별한 지원을 요구하지 않습니다. 프로그램을 어떻게 쪼갤지는 프로그래머가 결정합니다. 이 때문에 프로그래머는 프로그램에 대해 완벽하고 정확하게 이해하고 있어야 하며, 오버레이가 복잡해질 경우 디버깅..
-
10. 프로세스 간 통신운영체제 2022. 8. 16. 03:37
이전 프로세스 소개 글에서 멀티 프로세스에 대해서 말씀드린 적이 있습니다. 그때 프로세스끼리는 특별한 통신 방법을 사용한다고 했었죠. 이번에는 프로세스끼리 어떻게 통신하는지에 대해 알아보겠습니다. 프로세스 간 통신(Inter Process Communication : IPC) 프로세스는 독립적인 데이터 공간을 할당받았기 때문에 프로세스 간에 데이터 공유를 할 수 없습니다. 하지만 커널을 통해 몇 가지 방법으로 데이터를 공유하게 됩니다. 전역 변수 프로세스 내에 공동으로 사용하는 메모리 공간을 생성하는 방법입니다. 프로세스의 code, data, heap이 공유 공간이 됩니다. 전역 변수를 이용한 통신은 사실 스레드 간 통신 방법에 해당합니다. static이나 global 키워드로 전역 변수를 만들어 그 ..
-
09. 프로세스 스케줄링운영체제 2022. 8. 13. 21:24
프로세스 스케줄링에 대해서는 07. PCB와 Context Switching에서 다뤘습니다. 프로세스 스케줄링을 간단하게 다시 짚고, 이번에는 여러 스케줄링 기법에 대해 자세하게 알아보겠습니다. 프로세스 스케줄링은 프로세스에게 언제, 얼마나 시간과 자원을 할당해줄지 조율하는 것을 말합니다. 어떤 프로세스가 CPU 자원을 독점하게 된다면 컴퓨터가 제대로 동작할 수 없게 됩니다. 이를 방지하고, CPU 자원을 효율적으로 사용하기 위해 커널이 프로세스를 스케줄링합니다. 비선점(Non Preemptive) 스케줄링 한 프로세스가 CPU를 할당받으면 다른 프로세스가 자리를 뺏을 수 없습니다. 화장실에 누군가 있으면 사용할 수 없는 것과 같다고 생각하시면 됩니다. 모든 프로세스에게 똑같은 시간이 주어지기 때문에 공..
-
08. 프로세스의 생성과 복사운영체제 2022. 8. 12. 23:41
※ 이 글은 UNIX를 기준으로 서술되었습니다. 더불어 프로세스에 대한 설명을 먼저 읽고 오시면 좋습니다. https://today-studies.tistory.com/12 https://today-studies.tistory.com/13 프로세스의 생성과 복사 프로세스들은 각자 고유한 번호인 프로세스 id, PID(Process IDentifier)를 갖습니다. UNIX는 부팅 시에 커널에 초기 프로세스 3개가 생성되고, PID는 0, 1, 2입니다. 그중에서 PID 1 프로세스가 init 프로세스인데, 이 프로세스는 모든 프로그램 프로세스의 조상입니다. 즉, 모든 프로그램은 init 프로세스가 복제된 것입니다. 프로세스는 fork() / exec() 시스템 콜에 의해 복제됩니다. fork() 프로세스..
-
07. PCB와 Context Switching운영체제 2022. 8. 10. 19:16
[운영체제] - 06. 프로세스와 스레드 프로세스 제어 블록(Process Control Block : PCB) 프로세스는 생성되면서 프로그램의 코드와 함께 PCB가 메모리에 올라가게 됩니다. PCB는 프로세스에 대한 정보를 담고 있는 테이블입니다. 프로세스는 커널에 의해 관리됩니다. 커널은 프로세스에게 자원을 얼마나, 언제까지 할당, 분배해줄 것이며 프로세스에게 어떤 일을 시키고, 프로세스 간의 협력까지 모든 일을 도맡아 처리합니다. 즉, 커널이 중간 관리자이고, 프로세스가 실무자라고 볼 수 있습니다. 그리고 커널이 PCB의 정보를 보고 프로세스들을 관리하게 되는 것입니다. 프로세스 상태 전이 커널은 작업을 효율적이고 공정하게 처리하기 위해 프로세스를 상태별로 나누어 관리합니다. 생성(보류) 상태, 준..