Computer Science 기본 지식 91

[운영체제] 가상 메모리 (1) 페이징과 세그먼테이션

독학사 운영체제 편을 공부하고 정리한 글입니다. 가상 메모리 주 기억장치의 메모리 공간보다 큰 주소 지정을 할 수 있도록 함 하나의 프로세스 전체가 주 메모리에 있지 않고 일부만 있어도 실행 가능하게 함 가상 메모리를 통하여 주 메모리의 실제 주소 공간 크기에 구애받지 않고 프로그래밍을 할 수 있음 - 가상 메모리의 크기 = 물리 메모리와 스왑 영역을 합한 크기 - 메모리 분할 방식 가변 분할 방식: 세그먼테이션 고정 분할 방식: 페이징 페이징 기법 고정 분할 방식을 이용한 가상 메모리 관리 기법 물리 주소 공간을 같은 크기로 나누어 사용한다. 가상 주소의 분할된 각 영역은 페이지 / 물리 메모리의 각 영역은 프레임이라고 한다. 가상 주소 페이지 번호에 대응하는 물리 주소 프레임 번호를 저장하는 페이지 ..

[운영체제] 주 메모리 관리

독학사 운영체제 편을 공부하고 정리한 글입니다. 메모리 관리 메모리의 구조는 1바이트 단위로 나뉘고 주소로 구분하는데 0번지 부터 시작한다. CPU는 메모리 주소 레지스터를 통해 데이터를 메모리에서 읽어오거나 쓰기가 가능하다. 오늘날 시분할 시스템에서 많은 응용프로그램이 동시에 메모리에 올라와있으므로 관리가 복잡하다. 메모리 관리자 다중 프로그래밍 환경에서 효율적으로 메모리를 사용하기위해 메모리 할당 및 해제 등의 작업을 수행한다. 메모리 관리 유닛(Memory Manage Unit, MMU)라는 하드웨어가 메모리 관리를 담당한다. 메모리 관리 작업은 가져오기(fetch), 배치(placement) 그리고 재배치(replacement)로 나뉜다. 1. 적재 정책 - 프로세스와 데이터를 메모리로 가져오는 ..

[운영체제] 교착상태

독학사- 운영체제 편을 공부하고 정리한 내용입니다. 교착상태 deadlock 2개 이상의 프로세스가 서로 작업이 끝나기를 기다리는 상태로 더 이상 진행이 불가능한 상황을 교착상태라고 한다. 교착상태와 기아현상 기아현상: 다른 우선순위 프로세스가 완료되고 운영체제로부터 자원을 할당받을 때까지 기다리는 현상 교착상태: 여러 프로세스가 같이 자원을 사용하다 발생하는 더 이상 진행이 불가능한 상태가 되는 현상 - 교착상태 예시 P1 프로세스는 프린터를 사용 중이면서 디스크에 대한 사용을 요청 중에 있다. P2 프로세스는 디스크를 사용 중이면서 프린터에 대한 사용을 요청 중에 있다. 두 프로세스 중 한 프로세스가 자원을 반납하거나 사용 요청을 중지하지 않는 이상 더 이상 실행이 불가능하다. 교착상태 필요조건 --..

[운영체제] 프로세스 동기화

독학사- 운영체제 편을 공부하고 정리한 내용입니다. 공유자원 공유 자원은 여러 프로세스 혹은 스레드가 공유하는 변수, 메모리, 파일 등을 말한다. 접근 순서에 따라 공유 자원에 대한 데이터가 올바르지 못한 결과가 생길 수 있다. - 생산자 소비자 문제 공유 자원 접근 순서에 따라 결과가 달라지는 예로, 생산자 프로세스가 생산하는 정보를 소비자가 소비하는 형태이다. 생산자 소비자 while(true){ /* produce an item in next produced * / while(counter == BUFFER_SIZE) /* do nothing */ buffer[in] = next produced in = (in + 1) % BUFFER_SIZE; counter++; } while(true){ whi..

[운영체제] 프로세스 스케줄링

스케줄링 여러 프로세스가 사용하는 자원을 어떤 시점에 어떤 프로세스에 할당할지 결정하는 것 스케줄링의 목적 - 프로세서의 이용률을 높이고 처리율을 향상 하나의 CPU에서 여러개의 프로세스를 실행하는 다중 프로그래밍 방식은 프로세스가 입출력 등으로 대기 상태로 진입 시 다른 프로세스로 교체해 (문맥 교환) 프로세서의 유휴 시간을 줄이고 주어진 시간 동안 처리하는 작업량을 증가시킬 수 있다. - 응답시간을 최소화 또한 시분할 시스템에서 프로세스에 할당된 시간이 만료됨에 따라 교체하여 들어올 프로세스를 결정하는 것도 CPU 스케줄러가 담당한다. - 자원할당의 공정성 모든 프로세스가 자원을 공평하게 사용할 수 있도록 해야 한다. - 실행 대기 방지 무한히 대기하는 프로세스가 없게 해야 한다. - 우선순위 우선순..

[운영체제] 프로세스와 스레드

독학사- 운영체제 편을 공부하고 정리한 내용입니다. 프로세스 개념 커널에 등록되어 실행중인 프로그램을 의미 디스크에 있던 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태이다. 프로세서 점유 시간, 메모리, 파일 같은 자원을 할당받는다. 프로세스는 활동상태를 나타내는 프로그램 카운터와 프로세서 레지스터를 포함한다. 별도의 주소공간을 가지며 코드, 데이터, 힙, 스택으로 분리된 메모리 공간을 가진다. - 프로세스 메모리 구조 코드(text segment): 실행 가능한 명령어들이 포함된 코드가 정의되어있다. 수정(write)이 불가능하다. 초기화된 전역 변수(data segment): 초기값이 있는 전역 변수가 정의되어있다. 초기화되지 않은 전역변수(BSS): 초기값이 없는 전역 변수가 정의되어있다..

[운영체제] 명령어 구조와 사이클 / 인터럽트 / 커널

독학사- 운영체제 편을 공부하고 정리한 내용입니다. 명령어 구조 프로세서는 명령어에 따라 레지스터 값(피연산자)을 이용하여 연산을 실행한다. 연산 부호(명령부)와 피연산자들(주소부로)로 나누어져 명령 레지스터 IR(Instruction Register)에 저장되어있다. 연산 부호 (+,-,*,/,mov,cmp) 피연산자1 피연산자2 ... 피연산자n 1) 연산 부호 프로세서가 실행할 연산을 정의한다. 산술 연산, 논리 연산, 비트 쉬프트, 보수 등의 연산을 실행한다. 2) 피연산자 연산할 데이터 정보를 저장한다. 일반적으로 메모리, 외부 기억장치, 입출력 장치 등에 있는 메모리 주소를 피연산자(레지스터)로 가져와 필요한 연산을 수행한다. 명령어 실행 - 관련 CPU 내부 레지스터 IR: Instructi..

[운영체제] 컴퓨터 시스템의 구성

독학사- 운영체제 편을 공부하고 정리한 내용입니다. 컴퓨터 하드웨어의 구성 운영체제: 하드웨어 자원을 관리하는 소프트웨어 하드웨어: 프로세서, 메모리, 주변장치로 구성되고 이들은 시스템 버스로 연결 - 폰 노이만 구조 CPU, 메모리, 입출력 장치, 저장장치가 버스로 연결되어 있는 구조 "모든 프로그램은 메모리에 올라와야 실행할 수 있다" 프로세서 중앙처리장치 CPU (Central Processing Unit) 연산장치, 레지스터, 제어장치로 구성되고 이들은 내부 버스로 연결 모든 연산은 레지스터에 저장된 데이터에 대해서만 수행 제어장치는 시스템 버스를 통해 주 메모리에서 레지스터로 데이터를 올리거나 내림 또한 연산을 위한 제어 신호를 보냄 - 레지스터 구분 1) 용도: 전용/범용 레지스터 2) 정보 ..

[운영체제] 운영체제 개념

운영체제 사용자가 응용 프로그램을 실행할 수 있는 환경을 제공하고 하드웨어 자원을 효율적으로 관리할 수 있도록 다양한 기능을 제공 운영체제의 구성요소 - 사용자 컴퓨터를 사용하는 사람, 장치 또는 다른 컴퓨터 - 소프트웨어 기능 수행을 위한 모든 프로그램 1. 시스템 소프트웨어: 하드웨어 자원을 관리하고 응용 프로그램의 실행을 지원. ex) 장치 드라이버 2. 유틸리티: 보조적인 역할로 시스템을 유지하고 성능을 개선. ex) 프로세스 관리자, 디스크 조각 모음 3. 응용 프로그램: 특정 작업을 수행하는 목적. ex) 웹 브라우저, 게임, 동영상 편집 프로그램 - 하드웨어 컴퓨터를 구성하는 물리적인 장치. ex) CPU, 메모리, 주변장치 운영체제의 역할 하드웨어 및 사용자, 응용 프로그램, 시스템 프로그..

[네트워크] 응용 계층 (2) DNS 도메인 네임 시스템

DNS (Domain Name System) - 배경 모든 전송은 목적지의 IP 주소를 알고 있어야 전송이 가능하나 응용을 위한 모든 IP 주소를 알기 힘들고 변동되는 경우가 많다. 문자열과 같은 직관적인 "이름"으로 IP 주소를 명명할 수 있다. 사람이 읽을 수 있는 이름, 호스트 이름(hostname))으로 간단히 원하는 서비스를 요청할 수 있다. - Domain Name System/Service (DNS) 계층적으로 구성된 분산형 데이터 베이스 시스템. DNS 서버 혹은 네임 서버라고 한다. 사용자가 hostname에 대응하는 IP 주소를 요청할때 DNS 응용프로토콜을 사용한다. - 분산적, 계층적 DNS 서버 DNS 서버는 계층적으로 분할 되어 있고 트리형식으로 각 상위 레벨 도메인은 하위 레벨..