CPU 자원은 한정적임. 그래서 OS를 각 프로세스가 적절하게 처리될 수 있도록 스케줄링 알고리즘을 통해 프로세스를 동시적으로 처리함.
준비 큐에 있는 대기 상태 프로세스 중 어떤 프로세스를 다음으로 실행(디스패치)할지 결정
일정 시간이 지나면 인터럽트가 발생해 프로세스가 준비 큐로 들어가서 준비 상태가 된다.
I/O가 발생하면 인터럽트가 발생해서 프로세스가 대기 큐로 들어 간다. I/O가 완료되면 프로세스가 준비 큐로 들어간다.
fork()가 호출되면 자식 프로세스가 생성되고, 자식 프로세스는 준비 큐로 들어간다.
스와핑은 프로세스 스케줄링의 일부로 작동한다.
문맥 교환 시 해당 프로세서가 적재되어 있지 않으면 스왑 인, 이때 공간이 부족하면 준비 상태인 프로세스를 스왑 아웃 시킴.
선점형: 다른 프로세스가 기존 실행중인 프로세스를 대체할 수 있음.
(문맥 교환 오버헤드 발생)
비선점형: 실행 상태의 프로세스를 다른 프로세스가 대체할 수 없음.
(다른 프로세스 대기 시간이 길어짐)
'선점'을 빼앗아서 자리를 차지하는 거라고 기억하면 됨!
논리 주소 -> mmu -> 물리 주소
내부 단편화
외부 단편화
외부 단편화를 해결하는 방법: 메모리 압축
논리 메모리의 단위: 페이지
물리 메모리의 단위: 프레임
프로세스 일부만 물리 메모리에 적재하는 것
(프로세스 전체가 물리 메모리에 적재되지 않아도 실행에 문제가 없는 점에 착안)
페이지 폴트 발생: 프로세스가 어떤 데이터에 접근하려 할 때, 해당 데이터를 담고 있는 페이지가 물리 메모리에 없는 경우, CPU는 페이지 폴트(page fault)라는 인터럽트를 발생시킵니다. 이는 메모리 관리 유닛(MMU)에서 발생하는데, MMU는 프로세스의 가상 주소를 물리 주소로 변환할 때 사용하는 페이지 테이블을 참조하여 이를 감지합니다.
운영 시스템의 개입: 페이지 폴트 인터럽트가 발생하면, 실행 중이던 프로세스는 일시 중단되고 제어권이 운영 시스템(OS)으로 넘어갑니다. OS는 페이지 폴트를 처리하기 위해 필요한 작업을 수행합니다.
디스크에서의 페이지 검색: OS는 해당 페이지가 디스크 상의 어디에 위치해 있는지를 확인합니다. 이는 보통 스왑 영역(swap space) 또는 프로세스의 실행 파일, 메모리 매핑된 파일 등에 저장되어 있습니다.
물리 메모리에 공간 확보: 필요한 페이지를 물리 메모리로 가져오기 전에, 충분한 공간이 있는지 확인합니다. 만약 메모리가 가득 차 있다면, 페이지 교체 알고리즘(예: LRU, FIFO 등)을 사용하여 어떤 페이지를 스왑 아웃할지 결정하고, 해당 페이지를 디스크의 스왑 영역으로 이동시킵니다.
페이지를 물리 메모리로 로드: 이제 OS는 디스크에서 해당 페이지를 찾아 물리 메모리의 할당된 프레임으로 로드합니다. 이 과정은 디스크 I/O를 필요로 하며, 상대적으로 시간이 많이 소요됩니다.
페이지 테이블 업데이트: 페이지가 물리 메모리로 로드되면, OS는 페이지 테이블을 업데이트하여 가상 주소와 물리 주소 간의 새로운 매핑을 반영합니다. 이로써 프로세스가 다시 해당 데이터에 접근할 때, 직접 물리 메모리에서 찾을 수 있게 됩니다.
프로세스 재개: 모든 처리가 완료되면, 페이지 폴트를 일으킨 명령어를 다시 실행하기 위해 프로세스의 실행을 재개합니다. 이번에는 필요한 데이터가 메모리에 있으므로, 프로세스는 중단 없이 계속 실행될 수 있습니다.
스와핑으로 인해 오버헤드가 발생하여 CPU 이용률이 급격히 떨어지는 것
워킹 세트 설정: 지역성을 기반으로 자주 사용하는 페이지 저장
-> 페이지 폴트가 빈번하게 발생하는 현상을 방지
CPU와 메민 메모리 간에 데이터 접근 시 속도 차이 줄임
지역성을 바탕으로 캐싱 대상을 결정함.
시간 지역성: 최근 참조한 내용을 다시 참조할 가능성이 높다.
공간 지역성: 실제 참조한 주소 근처의 내용을 참조할 가능성이 높다.
임계 영역(critical section)은 메모리 상의 특정 위치를 가리키는 것이 아니라, 멀티 스레딩 환경에서 동시에 실행되면 안 되는 코드의 일부를 의미
네트워크 통신 과정을 7계층으로 나눈 네트워크 표준 모델
송신부 -> 수신부
각 계층 별로 헤더가 붙어 캡슐화되어 하위 계층으로 내려감.
인터넷 통신 네트워크 프로토콜
TCP: 전송 제어 프로토콜
IP: 인터넷 프로토콜
32비트. 약 42억 개의 주소 할당 가능.
네트워크부 + 호스트부
네트워크는 특정 네트워크, 호스트는 해당 네트워크 안의 특정 장치
서브넷 마크스를 ip 주소와 and 연산을 하면 네트워크부와 호스트부를 추출할 수 있음.
서브네팅을 통해 아이피 주소를 실제 네트워크 크기에 맞게 할당할 수 있어서 더 효율적으로 사용할 수 있게 됨.
(초기에는 대충 크기별로 나눠놓은 클래스를 사용함.)
128비트
8개의 16진수 그룹, 각 그룹은 4개의 16진수
연속된 0의 그룹은 ::으로 축약
2001:0db8:85a3:0000:0000:8a2e:0370:7334