목록CS/운영체제 (6)
여름의 서재
💡 요구 페이징 1. 요구 페이징의 개요 - 요구 페이징 : 사용자가 요구할때 해당 페이지를 메모리로 가져오는 것 - 미리 가져오기 : 요구 페이징과 반대로 앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식 ex) 캐시 2. 페이지 테이블 엔트리(PTE)의 구조 - 페이지 번호 :매핑 방식에 따라 포함되기도 하고 포함되지 않기도 함 - 프레임 번호 (주소 필드) : 가상 주소의 패당 페이지가 어느 프레임에 있는지 알려주는 자료 구조로 페이지 테이블의 핵심 - 플래그 비트 접근 비트 : 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트 변경 비트: 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트 유효 비트: 페이지가 실제 메모리에 있는지를 나타내는 비트 (0일때가..
💡 가상 메모리의 개요 - 가상 메모리 : 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술 : 가상메모리의 크기 = 물리 메모리 + 스왑 영역 💡 페이징 기법 : 고정 분할 방식을 이용한 가상 메모리 관리 기법으로 물리 주소 공간을 같은 크기로 나누어 사용 - 페이징 기법의 주소 변환 과정 : VA = -> PA = * VA: 가상 주소, P (페이지), D (페이지의 처음위치에서 해당 주소까지의 거리) * PA: 물리 주소(실제 주소), F (프레임), D (프레임의 처음위치에서 해당 주소까지의 거리) 📌 페이지 테이블 엔트리 : 페이지 테이블의 각각희 한줄. 페이징 기법에서 페이지 테이블 엔트리는 프레임 번호만 가짐. - 가상 주소를 로 변환하는 공식 P = 가상주소/한 ..
💡 메모리 관리의 개요 1. 소스코드의 번역과 실행 - 컴파일러 : 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행 ex) 자바, C 소스코드에서 오류를 발견하여 실행 시 문제가 없도록 함 실행하기 전에 코드를 점검하여 오류를 수정하고 최적화함으로써 작고 빠른 실행 파일을 만듦 - 인터프리터 : 소스코드를 한 행씩 번역하여 실행 ex) 자바스크립트, 파이썬 2. 메모리 관리자의 역할 - 가져오기 작업 : 프로세스와 데이터를 메모리로 가져오는 작업 📌 가져오기 정책 : 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 정책 - 배치 작업 : 가져온 프로세스와 데이터를 메모리의 어떤 부분에 올려놓을지 결정하는 작업 📌 배치 정책 : 가져온 프로세스를 메모리의 어떤 위치에 ..
💡 프로세스간 통신 - 프로세스 내부 데이터 통신 : 하나의 프로세스 내에 2개 이상의 스레드가 존재하는 경우의 통신이다. 프로세스 내부의 전역 변수나 파일을 이용하여 데이터를 주고 받는다. - 프로세스간 데이터 통신 : 같은 컴퓨터에 있는 여러 프로세스끼리 통신하는 경우로, 공용 파일 또는 운영체제가 제공하는 파이프를 이용하여 통신한다. - 네트워크를 이용한 데이터 통신 : 여러 컴퓨터가 네트워크로 연결되어 있을 때도 통신이 가능한데, 이 경우 프로세스는 소켓을 이용하여 데이터를 주고받는다. (네트워킹) 1. 프로세스 간 통신의 분류 - 통신 방향에 따른 분류 양방향 통신: 데이터를 동시에 양쪽 방향으로 전송할 수 있는 구조, 소켓 통신이 이에 해당 반양방향 통신: 데이터를 양쪽 방향에서 전송할 수 있..
💡 CPU 스케줄링이란? : CPU 스케줄러는 프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일을 하며, CPU 스케줄링은 CPU 스케줄러가 하는 모든 작업을 가리킨다. 1. 스케줄링의 단계 고수준 스케줄링: 시스템 내의 프로세스 수(멀티프로그래밍 정도)를 조절하는 것이다. 중간수준 스케줄링: 전체 시스템의 활성화된 프로세스 수를 조절하여 과부하를 막는 것이다. 저수준 스케줄링: 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기상태로 보낼지 등을 결정하는 것이다. 2. 스케줄링의 목적 공평성: 모든 프로세스가 자원을 공평하게 배정받아야 하며, 자원 배정 과정에서 특정 프로세스가 배제되면 안된다. 효율성: 시스템 자원이 유휴 시간 없이 사용되도록 스케줄링을 하고, 유휴 자원을 사용하..
💡 프로세스 1. 프로그램 vs 프로세스 - 프로그램 : 저장장치에 저장되어 있는 정적인 상태 - 프로세스 : 프로그램이 실행을 위해 메모리에 올라온 동적인 상태 (= 프로그램 + 프로세스 제어 블록) 2. 프로세스의 5가지 상태 - 생성 상태 (created status) : 프로세스가 메모리에 올라와 실행 준비를 완료한 상태, 프로세스 제어 블록이 생성됨 - 준비 상태 (running status) : 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태, 실행될 프로세스를 CPU 스케줄러가 결정함. * 디스패치 : 준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 CPU 스케줄러의 작업 - 실행 상태 (running status) : 프로세스가 CPU를 할당받아 실행되는 상태 * tim..