분류 전체보기 252

공유 메모리 시스템 (Shared memory system)

공유 메모리 시스템 (Shared memory) 공유 메모리를 사용하는 프로세스 간 통신에서는 통신하는 프로세스들이 공유 메모리 영역을 구축해야 한다. 보통 공유 메모리 영역은 공유 메모리 세그먼트를 생성하는 프로세스의 주소 공간에 위치한다. 이 공유 메모리 세그먼트를 이용하여 통신하고자 하는 다른 프로세스들은 이 세그먼트를 자신의 주소 공간에 추가하여야 한다. 일반적으로 운영체제는 한 프로세스가 다른 프로세스 메모리에 접근하는 것을 금지한다. 따라서, 공유 메모리를 사용하기 위해서는 둘 이상의 프로세스가 이 제약 조건을 제거하는 것에 동의를 해야 한다. 그 후, 프로세스들은 공유 영역에 읽고 씀으로써 정보를 교환할 수 있다. 데이터의 형식과 위치는 통신 프로세스들에 의해 결정되며 이는 운영체제의 소관이..

프로세스간 통신(Interprocess Communication)

프로세스간 통신 (Interprocess Communication) 프로세스 간 통신(Inter-Process Communication, IPC)이란 프로세스 간에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다. 특정 프로세스가 다른 프로세스들에게 영향을 주거나 받지 않는다면 독립적인 프로세스라고 말하고, 다른 프로세스들에게 영향을 주거나 받는다면 협력적인 프로세스라고 말한다. 프로세스가 협력할 수 있는 환경을 제공하는 데는 몇 가지 이유가 있다. - 정보 공유 (Information sharing) 여러 사용자가 동일한 정보에 흥미를 가질 수 있으므로, 그러한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 한다. - 모듈성 (Modularity) 시스템 기능을 별도의 프로세스들..

프로세스에 대한 연산 (Operation on Processes)

프로세스에 대한 연산 (Operation on Processes) 대부분의 시스템 내의 프로세스들은 병행 실행될 수 있으며, 반드시 동적으로 생성되고 제거 되어야 한다. 1. 프로세스 생성 (Process Creation) 프로세스는 실행 도중에 프로세스 생성 시스템 호출을 통하여 여러 개의 새로운 프로세스를 생성한다. 생성하는 프로세스를 부모 프로세스 생성되는 프로세스를 자식 프로세스라고 한다. 이 결과, 프로세스 트리를 형성한다. 현대 운영체제들은 프로세스 식별자(pid - process id)를 통해서 프로세스를 구분한다. 이때, 이 식별자는 통상적으로 정수이다. 일반적으로, 프로세스가 자신의 임무를 달성하기 위해서는 자원(CPU 시간, 메모리, 파일, 입출력장치)이 필요하다. 프로세스가 서브프로세..

프로세스 스케줄링 (Process Scheduling)

프로세스 스케줄링 (Process Scheduling) 다중 프로그래밍의 목적은 CPU 이용을 최대화하기 위하여 항상 하나의 프로세스라도 실행되도록 하는데 있다. 시분할의 목적은 각 프로그램이 실행되는 동안 사용자가 상호작용할 수 있도록 프로세스들 사이에서 CPU를 빈번하게 교체하는 것이다. 이 목적을 달성하기 위해 프로세스 스케줄러는 CPU에서 실행 가능한 여러 프로세스들 중에서 하나의 프로세스를 선택한다. 단일처리기 시스템에서는 실행 중인 프로세스가 한 개 이상 있을 수 없다. 만일 프로세스들이 여러 개가 있다면, 나머지 프로세스들은 CPU가 자유로워져 다시 스케줄링이 이루어질 때까지 기다려야 한다. 1. 스케줄링 큐 (Scheduling Queue) 프로세스가 시스템에 들어오면, 이들은 작업 큐에 ..

프로세스

프로세스 1. 프로세스란? 간단히 말해서 프로세스란 실행 중인 프로그램을 말한다. 프로세스는 현대의 시분할 시스템에서 작업의 단위이다. 프로세스는 일반적으로 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시적인 자료를 가지는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 2. 프로세스 상태 (Process State) 프로세스는 실행되면서 그 상태가 변한다. 프로세스 상태의 일부분은 프로세스의 현재 활동에 따라 결정된다. 각 프로세스는 다음 상태들 중 하나의 상태로 존재하게 된다: 1) new : 프로세스 생성 중2) running : 명령어들을 실행 중3) waiting : 프로세스가 어떤 사건(I/O ..

세그멘테이션 (Segmentation)

세그멘테이션 (Segmentation) 페이징 기법은 페이지라는 단위로 메모리를 일정한 간격으로 자르는 방식으로 메모리를 관리한다. 하지만 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자를 수 있는 세그먼테이션 방법이 있다. 예를 들면 우리가 돼지를 잡아서 보관을 한다고 생각해보자. 페이징의 방법을 사용하면 돼지를 모두 같은 단위로 잘라서 보관을 하는 것이다. 반면에 세그먼테이션은 부위별로 다른 크기로 잘라서 보관하는 것이다. (페이징 관련 내용: ) 세그멘테이션은 프로세스를 세그먼트의 집합으로 생각한다. 사실 하나의 프로세스가 동작하려면 기본적으로 "코드, 데이터, 그리고 스택" 이 세 가지의 세그먼트는 항상 가지고 있다. 추가로, 프로그램의 시작점이라고 할 수 있는 main ..

OS/메모리 관리 2018.10.24

E-R 모델 (E-R Model)

E-R 모델 (E-R Model) E-R 모델은 데이터를 개체(Entity), 속성(Attribute), 관계성(Relationship)으로 나타내는 데이터 모델이다. 1. 개체 (Entity) 개체란 단독으로 존재하는 객체를 의미한다. 하나의 E-R 모델에서는 동일한 객체가 둘 이상 존재하지 않는다.E-R 다이어그램에서는 개체를 네모로 표시한다. 개체중에는 약한 개체(Weak Entity)라고 불리는 것이 있다. 이 약한 개체란, 스스로 존재할 수 없으며, 반드시 상위 개체가 존재해야 존재할 수 있는 개체이다. 약한 개체는 E-R 다이어그램에서 2개의 네모 (네모 안에 네모가 있는 형태)로 표시한다. 2. 속성 (Attribute) 개체가 갖는 속성이다. E-R 다이어그램에서 속성은 원(혹은 타원)으로..

DB 2018.10.22

관계형 모델 (Relational Model)

관계형 모델 (Relational Model) 1. 관계형 모델 "관계형 모델"은 함수 종속(Functional Dependency)에 의해 정규화(Normalization)된 모델이다. "함수 종속"이란, 어떤 릴레이션 R에서 X, Y가 릴레이션 R의 부분 속성(Attribute)이라고 할 때 속성 X의 도메인 값 각각에 대해 시간에 관계 없이 항상 속성 Y의 도메인 값이 오직 한개만 연관된다면 Y는 X의 함수 종속이라고 하고, X(결정자) -> Y(종속자)로 표시한다. 함수 종속과 정규화에 대해서는 나중에 자세히 다루도록 하겠다. 관계형 모델은 데이터를 컬럼(column = 열)과 로우(row = 행)를 이루는 하나 이상의 테이블(또는 관계)로 정리하며, 고유 키(Primary key)가 각 로우(r..

DB 2018.10.22

페이지 테이블의 구조 (Structure of the Page Table)

페이지 테이블의 구조 (Structure of the Page Table) 1. 계층적 페이징(Hierarchical Paging) 대부분 현대 컴퓨터는 매우 큰 논리 주소 공간(2^32에서 2^64)을 지원한다. 이러한 환경에서는 페이지 테이블 자체가 상당히 커진다. 예를 들어, 32비트 논리 주소 공간을 가진 시스템을 생각해보자. 이 시스템에서 페이지의 크기가 4KB(2^12)라면 페이지 테이블은 약 100만(2^32/2^12)개의 항목으로 구성될 것이다. 각 항목은 다시 4B로 구성되기 때문에 각 프로세스는 페이지 테이블 하나만을 저장하기 위하여 4MB의 물리 주소 공간이 필요할 것이다. 이 경우, 모든 페이지 테이블을 주 메모리에서 연속적으로 할당하기를 바라지는 않을 것이다. 한 가지 간단한 해결..

OS/메모리 관리 2018.10.13

페이징

페이징 (Paging) 페이징은 논리주소 공간이 연속된 하나의 공간에 모두 모여 있어야 한다는 제약을 없앤다. 그러므로 페이징을 사용하면, 주 메모리에 올라와 있던 부분을 디스크로 내보낼 때 디스크 상에 이들을 연속적으로 수용할 수 있는 자유 공간을 찾기 위해서 부산을 떨 필요가 없다. 전통적으로 페이징을 구현하기 위한 기능은 하드웨어가 제공해 왔다. 그러나, 최근 디자인에서는 하드웨어와 운영체제의 긴밀한 연계를 통해서 페이징을 구현하고 있다. 1. 기본 방법 물리 메모리는 프레임(frame)이라고 불리는 고정 크기의 블록으로 나누어져 있다. 논리 메모리는 페이지(page)라 불리는 프레임과 같은 크기의 블록으로 나누어진다. 논리 메모리는 페이지(page)라 불리는 프레임과 같은 크기의 블록으로 나누어진..

OS/메모리 관리 2018.10.13