Virtual Memory

가상 메모리 가상 메모리라는 것은 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다. 이 기법의 주요 장점중 하나는 사용자 프로그램이 물리 메모리 보다 커져도 된다는 점이다. 배경 많은 경우에 프로그램 전체가 한꺼번에 메모리에 늘 올라와있어야 하는것은 아니다 아래의 예시가 있다. 프로그램에는 잘 발생하지 않는 오류 상황을 처리하는 코드가 종종 존재한다. 이러한 오류들은 거의... » read more

Memory

메모리 관리 프로세스에게 메모리를 할당하는 방법 컴퓨터 시스템에서 페이징의 동작 방법 배경 메모리는 각각 주소가 할당된 이련의 바이트들로 구성된다. CPU는 프로그램 카운터가 지시하는 대로 메모리로부터 다음 명령어를 가져온다. 명령어는 필요한 경우 추가적인 데이터를 더 가지고 올수도 있고 내보낼 수도 있다. 기본 하드웨어 메인 메모리와 프로세서 자체에 내장되어 있는 레지스터들은 CPU가 직접 접근할 수 있는 유일한... » read more

CPU Scheduling

CPU 스케줄링 스레드를 지원하는 운영체제에서는 실질적으로 운영체제는 프로세스가 아니라 커널 수준 스레드를 스케줄 한다. 프로세스 스케줄링과 스레드 스키줄링은 상호교환적으로 사용된다. 일반적인 스케줄링 개념을 논의하는 경우 프로세스 스케줄링을 사용하고 스레드에 국한된 개념을 가리키는 경우 스레드 스케줄링이라는 용어를 사용한다. 기본 개념 단일 프로세서 시스템에서는 한 순간에 오직 하나의 프로세스만이 실행할 수 있다. 다중 프로그래밍의 목적은 CPU 이용률을... » read more

Process synchronization

프로세스 동기화 협동 프로세스는 시스탬 내에서 실행중인 다른 프로세스의 실행에 영향을 주거나 영향을 받는 프로세스다. 협동 프로세스에서 데이터 공유는 동시접근에 의한 데이터의 비 일관성을 낳을 수 있다. 협동 프로세스의 질서있는 실행을 보장하며, 이를 통해 데이터의 일관성을 유지하는 기법을 알아보자. 배경 프로세스는 동시 또는 병렬로 실행될 수 있다. CPU 스케줄러가 프로세스 사이에서 빠르게 오가며 각 프로세스를... » read more

Thread

스레드 스레드는 CPU이용의 기본 단위다. 스레드는 다음으로 구성된다 스레드ID 프로그램 카운터 레지스터 집합 스택 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션 그리고 열린 파일이나 시그널과 같은 운영체제 자원들을 공유한다. Motivation 어플리케이션은 멀티 코어를 사용하여 다수의 CPU집중 작업을 병렬로 처리할 수 있다 프로세스와 스레드가 하나인 시스템에서는 여러개의 동시 요청에 하나씩 처리할 수 밖에 없다.... » read more

Process

프로세스 초기의 컴퓨터 시스템은 한번의 하나의 프로그램만 실행하도록 허용했다. 오늘날 컴퓨터는 메모리에 다수의 프로그램들이 적재되어 병행 실행되는 것을 허용한다. 제어와 구획화의 필요성에 따라 프로세스의 개념이 생겼다. 프로세스란 실행중인 프로그램이다. 프로세스 개념 CPU활동을 지칭하는 이름 일괄처리 시스템 : Job 시분할 시스템 : 사용자 프로그램, Task 이러한 명칭들이 있지만 모두 프로세스라고 부른다. 프로세스 프로세스는 텍스트 섹션으로 알려진... » read more

Composite pattern

Composite 패턴 컴포짓 패턴은 part-whole의 관계를 갖는 객체들을 정의할때 유용하다. 여러 객체가 한 클래스 전체 객체의 일부분으로 정의될때 사용한다. 부분 객체의 추가나 삭제가 있어도 전체 클래스의 코드를 변경하지 않으면 컴포짓 패턴은 유용하다. 그리고 클라이언트는 whole과 part를 구분하지 않고 동일한 인터페이스를 가질 수 있다. 컴퓨터에 추가 장치 지원하기 컴퓨터를 모델링해보자. 컴퓨터에는 Keyboard, Monitor, RAM, SSD, CPU등이... » read more

Abstract Factory pattern

Abstract factory 패턴 추상 팩토리 패턴은 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용하다. 계속되는 엘리베이터 예제에서 벤더에 따른 코드를 작성하면 벤더가 바뀌었을때 모든 부품의 코드가 벤더를 이동해야한다. 이런 경우에 부품별로 Factory를 정의하는 대신 관련 객체들을 일관성 있게 생성 할 수 있도록 Factory클래스를 정의하는 것이 효과적이다. 예를들어 Motor클래스를 위한 MotorFactory나 Door클래스를 위한 DoorFactory... » read more

Factory method pattern

Factory method 패턴 팩토리 메소드 패턴은 객체의 새성 코드를 별도의 클래스 또는 메소드로 분리함으로써 객체 생성의 변화에 대비하는데 유용하다. 프로그램이 제공하는 기능은 상황에 따라 변경될 수 있다. 그리고 특정 기능의 구현은 개별 클래스를 통해 제공되는 것이 바람직한 설계다. 그러므로 기능의 변경이나 상황에 따른 기능의 선택은 바로 해당 객체를 생성하는 코드의 변경을 초래한다. 게다가 상황에 따라... » read more

OS Structure

운영체제 구조 운영체제는 프로그래밍이 실행되는 환경을 제공해 준다. 운영체제를 살펴보는 몇가지 관점이 있다. 첫번째는 운영체제가 제공하는 서비스에 초점을 맞추는 것 두번째는 운영체제가 사용자 및 프로그래머에게 제공하는 인터페이스에 초점을 맞추는 것 세번째는 시스템의 구성요소와 그들의 상호연겨에 초점을 맞추는 것 운영체제 서비스 User Interface : 거의 모든 운영체제는 UI를 제공한다. CLI와 GUI가 있다. Program execution : 시스템은... » read more