프로세스 개념 프로세스(process) = 작업(job) : 모든 CPU 활동들 비공식적으로, 프로세스란 실행 중인 프로그램 프로세스의 현재 활동 상태는 프로그램 카운터 값 + 프로세서 레지스터의 내용 프로세스의 구조 텍스트 섹션 : 실행 코드 프로그램 실행 시간 동안 크기 고정 데이터 섹션 : 전역 변수 프로그램 실행 시간 동안 크기 고정 힙 섹션 : 프로그램 실행 중 동적으로 할당되는 메모리 프로그램 실행 중 동적으로 변함 메모리가 동적으로 할당됨에 따라 힙이 커짐 반대로 메모리가 시스템에 반환되면 축소됨 스택 섹션 : 함수 호출 시 임시 데이터 저장소(함수 매개변수, 복귀 주소, 지역변수) 프로그램 실행 중 동적으로 변함 함수 호출 → 매개변수, 지역변수, 복귀 주소를 포함하는 활성화 레코드가 스택..
운영체제 빌딩과 부팅 일반적인 운영체제 → 다양한 주변장치 구성을 가진 모든 종류의 컴퓨터에서 실행되도록 설계 운영체제 생성 운영체제 생성 절차 운영체제 소스 코드 작성 운영체제가 실행될 시스템의 운영체제 구성 운영체제 컴파일 운영체제 설치 컴퓨터와 새 운영체제 부팅 시스템 빌드 시스템 관리자가 운영체제 소스 코드의 사본을 수정한 뒤, 운영체제가 완전히 컴파일된다. 컴파일 시, 각 데이터는 구성 파일에 설명된 시스템에 맞는 운영체제의 출력-오브젝트 버전을 생성 상세한 조정을 할 수 없는 수준에서 시스템 설명을 통해 기존 라이브러리에서 사전 컴파일된 오브젝트 모듈을 선택 가능 모듈들이 서로 링크되어 새로운 운영체제 생성 → 지원되는 I/O 장치 드라이버를 포함한 라이브러리에서 필요한 것만 선택 가능 장점 ..
운영체제 설계 및 구현 설계 목표 시스템 설계의 첫 번째 문제점 → 시스템의 목표와 명세를 정하는 일 시스템 설계의 최상위 수준에서는 하드웨어와 시스템 유형의 선택에 영향을 받음 시스템 유형 : 일괄처리, 시분할, 단일 사용자, 다중 사용자, 분산, 실시간, 범용 등 최상위 설계 수준을 넘어서면 요구 조건을 일일이 명시하는 것이 훨씬 어려워짐 요구 조건은 근본적으로 사용자 목적과 시스템 목적 2가지 그룹으로 나뉨 사용자 목적 : 사용자들이 시스템에 기대하는 특징 시스템은 사용하기 쉽고, 편리하고, 믿을 수 있고, 안전하고, 신속해야 함 특징을 구현하는 방법에 대한 일반적인 합의 사항 X → 설계 명세에 쓸모없음 시스템 목적 : 시스템에 관련된 사람들에 의해 요구조건들이 정의되는 것 운영체제는 설계, 구현..
링커(Linker)와 로더(Loader) 프로그램은 디스크에 이진 실행 파일(ex : a.out, prog.exe)로 존재해야 함 소스 파일은 임의의 물리 메모리 위치에 적재되도록 설계된 오브젝트 파일로 컴파일됨 이러한 형식의 파일을 재배치 가능 오브젝트 파일이라고 불림 프로그램을 CPU에서 실행하는 절차를 설명할 예정 CPU에서 실행하려면, 프로그램을 컴파일하고 메모리로 가져와 프로세스 형태로 배치해야 함 링커 : 재배치 가능 오브젝트 파일을 하나의 이진 실행 파일로 결합 링킹 단계에서 다른 오브젝트 파일 또는 라이브러리 포함될 수 있음 표준 C 라이브러리, 수학 라이브러리 등 로더 : 이진 실행 파일을 메모리에 적재 프로그램 부분에 최종 주소를 할당, 프로그램 코드와 데이터를 해당 주소와 일치하도록 ..
시스템 서비스 시스템 유틸리티라고도 불리고 프로그램 개발과 실행을 위해 더 편리한 환경을 제공 일부 : 단순한 시스템 콜에 대한 사용자 인터페이스 대부분 : 훨씬 더 복잡함 시스템 서비스는 다음의 범주로 분류 가능 파일 관리 이 프로그램은 파일과 디렉터리 제어와 관련된 조작을 한다. 파일 디렉터리 생성, 삭제, 복사, 이름 바꿈, 인쇄, 열거, 조작 등 상태 정보 통상 이 프로그램들은 정보를 출력 장치 혹은 파일로 포맷하여 인쇄, 혹은 GUI의 윈도에 표시 단순히 는 날짜, 시간, 가용 메모리, 디스크 공간의 양, 사용자 수 등의 상태 정보 제공 복잡하게는 상세한 성능, 로깅 및 디버깅 정보를 제공 몇몇 시스템은 환경 설정 정보를 저장하고 검색할 수 있는 등록 기능 제공 파일 변경 디스크나 다른 저장 장..
다섯 가지 중요한 범주로 묶을 수 있음 → 프로세스 제어, 파일 조작, 장치조작, 정보 유지 보수, 통신과 보호 1. 프로세스 제어 실행 중인 프로그램은 수행을 정상적 또는 비정상적으로 멈출 수 있어야 한다. 시스템 종류에 따른 제어 차이 정상 또는 비정상적인 상황에서, 운영체제는 명령 인터프리터로 제어를 전달한 상태 ← 사실 운영체제는 명령 인터프리터로 제어를 전달해야 함 대화식 시스템 단순히 다음 명령을 계속 수행 사용자가 오류에 대응하여 적절한 명령을 내릴 것이라고 가정함(사용자에게 맡김) GUI 시스템 비정상적인 상황이라면, 팝업창이 사용자에게 오류를 알리고 지시를 기다림 기타 시스템 오류가 발생한 경우, 제어 카드를 사용하여 특별한 복구 조치를 지시 오류 발견 뒤 비정상적으로 종료하기를 원한다면..
시스템콜이란? 시스템 콜이 사용되는 방법의 예 운영체제에 의해 사용 가능하게 된 서비스에 대한 인터페이스 제공 간단한 프로그램이라도 운영체제의 기능을 아주 많이 사용 초당 수천 개의 시스템 콜을 수행 사용자 대부분은 이러한 상태를 알지 못함 → 응용 개발자들은 API에 따라 프로그램 설계 모든 운영체제는 고유한 시스템 콜 이름을 가짐 응용 프로그래밍 인터페이스(API) 응용 프로그래머가 사용 가능한 함수의 집합을 명시 각 함수에 전달되어야 할 매개변수와 반환값 포함 프로그래머는 운영체제가 제공하는 코드의 라이브러리를 통해 API를 활용 막후에서 API를 구성하는 함수들은 통상 응용 프로그래머를 대신하여 실제 시스템 콜을 호출 예 : Windows 함수 CreateProcess() → NTCreatePro..
이번 포스팅 목표 운영체제가 사용자에게 제공하는 서비스에 대해 알아가는 것 사용자에게 서비스를 제공하기 위한 방식(인터페이스)을 알아가는 것 1. 운영체제 서비스 운영체제는 프로그램과 그 사용자에게 특정 서비스를 제공 서비스로 인해 프로그래머가 작업을 더 쉽게 수행 가능 운영체제 서비스를 바라보는 관점 - 사용자에게 도움을 주는 목적 사용자 인터페이스(UI) : 거의 모든 운영체제가 제공 그래픽 사용자 인터페이스(GUI), 터치 스크린 인터페이스, CLI 등 프로그램 수행(program execution) :시스템은 프로그램을 메모리에 적재해 실행 가능해야 함 프로그램 무조건 실행을 끝낼 수 있어야 함(정상이든, 비정상이든) 입출력 연산(I/O) : 수행 중인 프로그램은 입출력을 요구할 수 있음 입출력에..