SW Engineering/OS Concept 62

12_프로세스간 통신

12_프로세스간 통신 운영체제 내에서 수행되는 병행 프로세스가 시스템에서 실행중인 다른 프로세스들에 영향을 주거나 받지 않는다면 독립적인 프로세스라 하며 영향을 준다면 협력적인 프로세스라 한다. 프로세스 협력을 허용하는 이유는 다음과 같다. 정보 공유(Information Sharing) : 여러 사용자가 동일한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 한다.(공유 파일 등) 계산 가속화(Computation Speed UP) : 특정 작업을 서브 태스크로 나누어 각각 다른 서브 태스크들과 병렬로 실행 되어야 한다. 모듈성(Modularity) : 시스템 기능을 별도의 프로세스들 또는 쓰레드 들로 나누어 모듈식 형태로 시스템을 구성하기를 원할 수 있다. 편의성(Convenience) : 개별 사..

11_프로세스에 대한 연산

11_프로세스에 대한 연산 대부분 시스템 내의 프로세스들은 병행 수행 될 수 있으며 반드시 동적으로 생성되고 제거되어야 한다. 프로세스는 실행 도중에 프로세스 생성 시스템 호출을 통해서 여러 개의 새로운 프로세스들을 생성 할 수 있다. 생성하는 프로세스를 부모 프로세스라 하며 생성된 새로운 프로세스들은 자식 프로세스라 부른다. 새로운 프로세스들은 다시 새로운 프로세스들을 생성할 수 있으며 그 결과 트리 구조의 프로세스가 형성 된다. 대부분의 운영체제들은 프로세스 식별자(PID)에 의해 프로세스를 구분하며 식별자는 정수 이다. 프로세스가 새로운 프로세스를 생성할 때 실행과 관련하여 두 가지 가능성이 있다. 부모가 계속해서 자식과 병렬로 실행 된다. 부모가 모든 자식 또는 일부 자식이 끝날 때까지 기다린다...

10_프로세스 스케줄링

10_프로세스 스케줄링 다중 프로그래밍의 목적은 CPU의 사용을 최대화 화기 위하여 항상 어떤 프로세스가 실행 되도록 하는데 있다. 시분할의 목적은 각 프로그램이 실행 되는 동안 사용자가 상호 작용할 수 있도록 프로세스들 사이에서 빈번하게 CPU를 교체하는 것이다. 위 두 개의 목적을 달성하기 위해 프로세스 스케줄러가 존재한다. 프로세스 스케줄러는 CPU에서 수행 가능한 여러 프로세스들 중에서 하나의 프로세스를 선택 한다. 단일 처리기 시스템에서는 실행 중인 프로세스가 한 개 이상 있을 수 없다. 만약 단일 처리기에 여러 프로세스들이 있다면 프로세스들은 CPU가 작업이 끝날 때까지 대기하여야 한다. 프로세스가 시스템에 들어오면 작업 큐에 놓여 진다.(메인 메모리 위치) 이 큐는 시스템 안의 모든 프로세스..

09_프로세스 개념

09_프로세스 개념 초기의 컴퓨터 시스템은 한 번에 하나의 프로그램만 수행 할 수 있었다. 현대의 컴퓨터 시스템은 메모리에 다수의 프로그램들이 적재되어 병행 수행되는 것을 허용 한다. 이러한 발전은 프로그램을 보다 견고하게 제어하고 보다 구획화 할 것이 필요 했다. 이러한 필요성으로 프로세스 라는 개념이 탄생 하였으며 프로세스는 수행중인 프로그램 이란 뜻을 가지게 되었다. 현대의 컴퓨터에서 프로세스란 시분할 시스템에서 작업의 단위이기도 하다. 프로세스는 일괄 처리 시스템 작업이나 시분할 시스템 사용자들의 태스크를 모두 지칭 한다. 또한 프로그램 카운터의 값과 처리기 레지스터의 내용으로 대표되는 현재 활동을 포함 한다. 프로세스는 일반 적으로 함수의 매개변수 복귀 주소와 지역 변수와 같은 임시적인 자료를 ..

08_시스템 부트

08_시스템 부트 하드웨어를 사용하려면 운영체제를 설치해야 한다. 하지만 운영체제가 설치 되었다고만 해서 하드웨어는 커널이 어디에 있는지, 어떻게 적재하고 사용 할까? 대부분의 컴퓨터 시스템에서는 부트스트랩 프로그램, 또는 부트스트랩 적재기로 알려져 있는 작은 크기의 코드가 커널을 찾고 그것을 메인 메모리에 적재하고 수행을 시작한다. 컴퓨터가 전원을 켜거나 재부팅 등의 명령을 받으면 명령 레지스터는 미리 지정된 메모리 위치를 가리키게 되고 그 곳에서부터 실행을 시작 한다. 그 위치에는 최초의 부트스트랩(bootstrap)이 존재한다. RAM은 시스템 시작 시에 알 수 없는 상태가 되기 때문에 이 프로그램은 ROM(Read only Memory) 안에 저장 된다.(흔히 BIOS라 불리는 영역) ROM은 초..

07_가상 머신(Virtual Machine)

07_가상 머신(Virtual Machine) 가상 머신(Virtual Machine)의 기본적인 개념은 한 컴퓨터의 하드웨어(CPU, 메모리, 디스크 드라이브, 네트워크 등)가 다수의 실행 환경을 제공하도록 추상화 하는 것이다. 각 개별적인 실행 환경이 자신만의 독립된 컴퓨터를 사용하는 환경을 제공 하는 것이다. 가상 머신을 구성하는 가장 큰 이유는 모두 동일한 하드웨어를 공유하면서 다수의 실행 환경(운영체제)을 동시에 수행 할 수 있다는 것이다. 또한 여러 가지 시스템 자원에 대해 완전한 보호가 이루어지므로 각 가상 머신은 강한 수준의 보안을 제공 한다. 그러나 동시에 가상 머신들은 자원을 직접적으로 공유 할 수 없어 가상 디스크를 공유하거나 네트워크 등을 통하여 공유 할 수 있다. 가상 머신의 접근..

06_운영체제 구조

06_운영체제 구조 운영체제와 같이 크고 복잡한 시스템은 적절하게 동작하고 쉽게 변경 될 수 신중히 제작되어야 한다. 일반 적인 접근 방법은 한 개의 일관된 시스템보다는 태스크를 작은 구성요소로 분리 하는 것이다. [간단한 구조(Simple Structure)] 운영체제는 처음에는 소형이면서 간단하고 제한된 시스템으로 시작 되었다. 최소의 공간에 최대의 기능들을 제공하도록 작성되어 있어서 모듈들로 주의 깊게 분할 되지 않았다. MS-DOS와 UNIX를 예를 들어 보자. MS-DOS : 인터페이스와 기능 계층이 잘 분리되어 있지 않다. 예를 들면 응용 프로그램이 기본 입/출력 루틴을 통하여 디스플레이와 디스크 드라이브에 직접 쓰기가 가능 하다. 이런 자유는 프로그램을 취약하게 만들었다. 따라서 사용자 프로..

05_운영체제 구조_설계 및 구현

05_운영체제 구조_설계 및 구현 설계 및 구현에서는 운영체제를 설계하고 구현할 때 우리가 당면하는 문제점을 논의한다. [설계 목표] 시스템을 설계하는데 있어 첫 번째 문제점은 시스템의 목표와 명세를 정의하는 일이다. 시스템 설계는 하드웨어와 시스템의 유형(일괄처리, 시분할 처리, 단일 사용 자 등)의 선택에 의해 영향을 받는다. 시스템 설계의 요구 조건들을 명세하는 것은 매우 어려운 일이지만 크게 사용자 목적과 시스템 목적 두 그룹으로 나눌 수 있다. 사용자 목적은 사용자들은 시스템이 사용하기 쉽고 편리하며 배우기 쉽고 안전해야 하는 등 요구사항이 있다. 이러한 명세는 어떻게 목적을 달성할 것인가에 대한 합의가 없기 때문에 시스템 설계에 있어 특별히 유용하지는 않다. 즉 운영체제는 설계, 구현, 유지보..

04_운영체제 구조_시스템 프로그램

04_운영체제 구조_시스템 프로그램 시스템은 시스템 프로그램의 집합체이다. 최하위 수준은 하드웨어 이고 그 위에 운영체제와 시스템 프로그램, 마지막에 응용 프로그램의 집합으로 이루어져 있다. 시스템 프로그램은 프로그램 개발과 실행을 위해 보다 편리한 환경을 제공 한다. 일부는 단순한 호출에 대한 사용자 인터페이스 이며 나머지는 훨씬 복잡한 시스템 이다. 시스템 프로그램에 대해 6개의 범주로 구분하여 보자. 파일 관리 : 파일과 디렉토리를 생성, 삭제, 복사, 이름변경, 인쇄, 덤프, 리스트 등 파일의 조작과 디렉토리를 조작 한다. 상태 정보 : 날짜, 시간, 사용 가능한 메모리 정보 등 단순한 정보 외에 상세한 성능, 로깅, 디버깅 정보 등을 제공한다. 파일 변경 : 디스크나 다른 저장 장치에 저장된 파..

03_운영체제 구조_시스템 호출의 유형

03_운영체제 구조_시스템 호출의 유형 시스템 호출은 다섯 가지의 주요 범주로 묶을 수 있다. [프로세스 제어] 끝내기(End), 중기(Abort) 적재(Load), 실행(Execute) 프로세스 생성, 프로세스 종료 프로세스 속성(Attribute) 획득, 프로세스 속성 설정 시간을 기다림 사건을 기다림(Wait Event), 사건을 알림(Signal Event) 메모리 할당 및 자유화 [파일 조작(File Manipulation)] 파일 생성(Create file), 파일 삭제(Delete File) 열기(Open), 닫기(Close) 읽기, 쓰기 위치변경(Reposition) 파일 속성 획득 및 설정 [장치 관리(Device Management)] 장치를 요청(Request Device), 장치를 ..