본문 바로가기

OS

(10)
[운영체제] 가상 메모리 관리 01.요구 페이징demand paging 1 요구 페이징의 개요 '요구 페이징: 사용자가 요청할 때 해당 페이지를 메모리로 가져오는 것 프로세스의 일부만 메모리로 가져오는 이유? 메모리를 효율적으로 관리하기 위해서 2 페이지 테이블 엔트리PTE 구조와 플래그 비트 '페이지가 스왑 영역에 있는 경우 -요구 페이징으로 인해 처음부터 물리 메모리에 올라가지 못한 경우 -메모리가 꽉 차서 스왑 영역으로 옮겨 온 경우 '플래그 비트 -접근 비트: 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트 -변경 비트: 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트 -유효 비트: 페이지가 실제 메모리에 있는지를 나타내는 비트 3 페이지 부재와 지역성locality 3.1 페이지 부재 프로세..
[운영체제] 가상 메모리의 기초 01.가상 메모리의 개요 1 가상 메모리 시스템 1.1 가상 메모리의 개념 '물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술 1.2 가상 메모리의 크기와 주소 '가상 메모리시스템의 모든 프로세스는 자신이 메모리의 어느 위치에 있는지 상관없이 0번지부터 시작하는 연속된 메모리 공간을 가짐 '논리 주소는 물리 메모리의 주소 공간에 비례하지만, 가상 주소는 물리 메모리 공간이 아닌 가상의 주소 공간을 가진다는 것 더보기 가상 메모리의 크기 가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기는 물리 메모리(실제 메모리)와 스왑 영역을 합한 크기 '동적 주소 변환DAT: 가상 주소를 실제 메모리의 물리 주소로 변환하는 작업 -프로세스가 아무 제약 없이 사용자의 데이터를..
[운영체제] 물리 메모리 관리 01.메모리 관리의 개요 1 메모리 관리의 복잡성과 이중성 '복잡성 -시분할 시스템에서는 모든 응용프로그램이 메모리에 올라와 실행되어 관리가 복잡하다. -복잡한 메모리 관리는 메모리 관리 시스템MMS이 담당 '이중성 -프로세스 입장에서 작업의 편리함과 관리자 입장에서 편리함이 충돌을 일으키는 것 -작업의 편리함과 관리의 편리함의 타협점을 찾는 방법을 모색 2 소스코드의 번역과 실행 2.1 컴파일러와 인터프리터의 동작 '컴파일러: 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역한 후 한꺼번에 실행 ex) C언어, 자바 등 Q.컴파일러의 목적은 무엇인가요? A.오류 발견, 코드 최적화를 통한 작고 빠른 실행 파일 생성 '인터프리터: 소스코드를 한 행씩 번역하여 실행 ex) 자바스크립트, 베이직 등 2.2 ..
[운영체제] 교착상태 01.교착 상태dead lock의 개요 1 교착 상태의 정의 '2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태 2 교착 상태의 발생 '시스템 자원: 다른 프로세스와 공유할 수 없는 자원을 사용할 때 발생 '공유 변수: 공유 변수를 사용할 때 발생, 한 변수를 할당받은 상태에서 다른 변수를 기다리면 교착 상태 발생 '응용 프로그램: DB같은 응용 프로그램에서도 발생, 데이터의 일관성을 유지하기 위해 잠금을 사용하는 과정에서 발생 가능성이 있다. 3 자원 할당 그래프resource allocation graph '프로세스가 어떤 자원을 사용 중이고 어떤 자원을 기다리고 있는지를 방향성이 있는 그래프로 표현한 것 '어떤 프로세스에 자원이 할당되어 있는지 혹..
[운영체제] CPU 스케줄링 01.스케줄링의 개요 1 CPU 스케줄링 '프로세스가 생성된 후 종료될 때까지 모든 상태 변화를 조정하는 일 담당 ㄴ프로세서 스케줄러라고도 한다. '여러 프로세스의 상황을 고려하여 CPU와 시스템 자원을 어떻게 배정할지 결정하는 일 2 스케줄링 단계 'CPU 스케줄러는 관리의 범주를 나누어 스케줄링을 한다. 2.1 고수준 스케줄링 '시스템 내의 전체 작업 수를 조절하는 것 '어떤 작업을 시스템이 받아들일지 또는 거부할지를 결정 '=장기 스케줄링, 작업 스케줄링, 승인 스케줄링 2.2 저수준 스케줄링 '어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정 '=단기 스케줄링 2.3 중간 수준 스케줄링 '중지와 활성화로 전체 시스템의 활성화된 프로세스 수를 조절하여 과부화 방지 '..
[운영체제] 프로세스와 스레드 01.프로세스의 개요 1 프로세스의 개념 '프로세스: 메모리에 적재(load)되어 실행되고 있는 프로그램 ㄴ컴퓨터 시스템의 작업 단위로 태스크task라고도 부른다. '현대의 운영체제는 시분할 방식을 기본으로 하기 때문에 프로세스가 여러 상태를 오가며 실행한다. ㄴ시분할 방식: CPU가 1개인 컴퓨터에서 여러 개의 프로세스를 동시에 실행 +프로그램과의 비교... 프로세스는 실행중인 프로그램 “프로그램은 실행가능한 명령어(instruction)의 집합”이다. 프로그램은 애시당초 누군가에게 쓰여지기를 목적으로 개발되었고 실제로 누군가에 의해 실행된다. “프로세스는 메모리에 적재(load)되어 실행되고 있는 프로그램”을 말한다. 정적인 프로그램과 달리 프로세스는 실제 실행 중인 프로그램을 일컫기 때문에 동적이라..
[운영체제] 컴퓨터 구조와 성능 향상 (2) 03. 컴퓨터 성능 향상 기술 1 버퍼 1.1 버퍼의 개념 '버퍼buffer: 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 장치 '일정량의 데이터를 모아 옮김으로써 속도의 차이를 완화하는 역할을 한다. NOTE_모니터 버퍼 C언어에서 '\n'은 줄 바꿈의 의미도 있지만 버퍼에 저장된 내용을 출력하라는 의미도 있다. '\n' 붙이는 습관 들이기! 1.2 스풀 '스풀SPOOL: CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼 ex) 프린터에 사용되는 스풀러spooler: 인쇄할 내용을 순차적으로 출력하는 소프트웨어 기존의 버퍼와 차이점이 있을까? 기존 버퍼는 프로그램들이 버퍼를 공유하지만, 스풀러는 한 인쇄물이 완료될 때까지 다른 인쇄물이 끼어들 수 없으므로 프로그램 간에 ..
[운영체제] 컴퓨터 구조와 성능 향상 (1) 01.컴퓨터의 기본 구성 1 하드웨어 구성 1.1 CPU와 메모리 'CPU: 명령어를 해석하여 실행하는 장치 '메모리: 작업에 필요한 프로그램과 데이터를 저장하는 장소 -Byte 단위로 분할되어 있으며 분할 공간마다 주소로 구분. 1.2 입출력장치 '입력장치: 외부의 데이터를 컴퓨터에 입력하는 장치 초기의 컴퓨터, 천공카드 사용 -> 현재, 키보드, 마우스, 스캐너 등 사용 '출력장치: 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치 프린터, 모니터, 스피커 등 +3D 컴퓨터의 세계 3D 도면을 바탕으로 3차원 물체를 만들어내는 기계를 뜻한다. 가공의 용이성 등 여러 문제 덕분에 초창기에는 대부분 재료로 플라스틱을 사용하였지만 점차 종이, 고무, 콘크리트, 식품에 금속까지 재료의 범위가 점..