×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,485,593명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)

운영체제 서비스


운영체제는 보통 4가지를 제공한다.


1. 부팅 서비스


하드웨어를 관리하고 프로그램을 실행 할 수 있도록 컴퓨터를 부팅해준다.(시동을 건다.)


부팅(혹은 부트스트래핑) 운영체제를 메인 메모리에 적재하는 과정을 의미한다.


이때 부트 로더는 부트스트랩 로더를 줄인 말로, 하드디스크와 같은 보조기억장치에 저장된 운영체제를 메인 메모리에 적재하는 ROM에 고정시킨 작은 프로그램이다.




** RAM과 ROM은 다르다  **

RAM(Random Access Memory)은 컴퓨터가 데이터를 빠르게 읽고 어플리케이션에 효율적으로 접근하기 위해 사용되는 반면

ROM(Read Only Memory)은 컴퓨터가 초기에 부팅 및 진단 위해 필요한 프로그램을 저장하고있다.


RAM은 컴퓨터 및 프린터에서 흔히 볼 수 있는 메모리 타입이고 최대 몇 기가 바이트까지 확장 될 수 있는 반면

ROM은 대개 개인용 컴퓨터의 경우 수천 바이트에 불과하다. 


그리고 RAM은 기본 메모리이며 휘발성이다.



운영체제는 처음 부팅하면 모든 하드웨어를 초기화 하는데 이때 초기화 목적은 시스템 장치 초기화, 시간 설정, 명령 해석기 적재 및 준비 등이 있다.


이때 시스템 장치의 초기화에는 디렉터리, 파일을 점검하고, 시스템 버퍼와 인터럽트 벡터(I/O에서 던지는 인터럽트)를 초기화 하며 운영체제의 루틴 대부분을 메모리 하위 주소에 적재하도록 설정한다.




2. 사용자 서비스

프로그래머가 프로그래밍 작업을 쉽게 할 수 있도록 도와준다.


사용자 인터페이스 제공

우리가 OS를 이용할 때는 사용자에게만 보이는 인터페이스 밖에 없고 실질적으로 대부분은 사용자에게 보이지 않는다.

우리가 이러한 인터페이스를 이용할 때는 CLI, GUI같은 형태를 이용한다.


- CLI(Command Line Interface) 제공

도스창이 대표적이다. CLI는 키보드 등으로 명령어를 입력하여 시스템과 응답을 주고 받는 형태로 진행되는 텍스트 인터페이스이다.


- 메뉴 인터페이스

이는 스마트폰, ATM기를 생각하면 편리하다.


- GUI(Graphical User Interface) 제공

GUI는 현재 블로그를 보기 위해 크롬 혹은 익스플로러를 실행시킨 그러한 도구들을 의미한다.

현재 블로그를 보는 사용자들의 OS는 GUI로 이루어져있을 것이다.


프로그램 실행

운영체제는 사용자가 프로그램 실행을 위해 메모리를 할당해주고 스케줄러를 이용하여 프로세스의 스케줄링을 담당해준다.


입출력 동작

사용자가 직접 수행 할 수 없는 입출력 동작을 지원해줌으로써 사용자가 입출력을 할 수 있도록 해준다.


파일 시스템 조작

OS는 파일 시스템 관리를 통해 사용자가 파일을 열고, 저장하고, 삭제하는동안 문제가 생기지 않도록 뒤에서 지원해준다.


오류 탐지

OS는 정전, 프린터 종이 부족, 오버플로 연산, 프로그램이 프로세서 시간을 너무 많이 사용하는 이러한 오류들을 감지하여 시스템을 모니터링 하는데 도움을 준다.


네트워크

컴퓨터간 네트워크 통신 혹은 프로세스간 네트워크 통신을 지원해준다.


3. 시스템 서비스

시스템의 효율적인 동작을 제공해준다.


운영체제에서는 다수의 작업을 동시에 실행 할 때 자원을 관리 할 수 있도록 지원해주고 각 사용자가 자원을 얼마나 많이 쓰는지에 대해 계정을 관리해주고 여러 프로세스가 함께 동작할 때 오류를 방지하지 위해 프로세스에 대한 보호와 보안 역할도 함께 해준다.


4. 시스템 호출

운영체제의 기능을 프로그램이 서비스 받을 수 있도록 프로그램과 운영체제간 인터페이스를 제공한다.


사용자단에서 지원하지 않는 기능들을 운영체제의 루틴을 호출하여 제공 받을 수 있다. 이를 API라고 한다.

이러한 API에는 프로세스 제어, 파일 조작, 장치 관리 등등이 있고 자세한 예로는 프로세스 생성, 실행, 입출력 호출 등등이 있다.



정리


프로세스 관리자

 - OS는 많은 활동을 관리한다.

   - 유저 프로그램들

   - 시스템 프로그램들 : 프린터 스풀러, 네임서버, 파일서버 등


 - 각각은 프로세스에서 캡슐화 된다.

   - 프로세스는 완전한 실행 문장을 포함한다.(코드, 데이터, PC, 레지스터, 사용하는 OS 자원들 등)

   - 프로세스는 프로그램이 아니다.

     - 프로세스는 실행중에 있는 프로그램의 하나의 경우이다. 

       많은 프로세스는 같은 프로그램을 돌릴 수 있다. 

       즉, 인터넷 100개 켜도 프로그램은 1개지만 프로세스는 100개인것


 - OS는 반드시

   - Create, delete, suspend, resume, 그리고 프로세스를 스케줄 해야한다.

   - 내부 프로세스 통신을 지원하고, 동기화, 교착상태를 조절해야한다.


파일시스템 관리자

 - 파일 시스템

   - 디스크들( 두번째 저장소 )은 장기간 저장소를 제공하지만, 직접 사용하기에는 곤란하다.

   

   - 파일 시스템은 파일과 다양한 파일에 동작을 제공한다.

     - 파일은 장기간 독립적으로 저장하지만, 읽고 쓸수 있는 끈질긴 정보의 수집이라 불린다.

     - 파일 시스템은 파일과 다른 디렉토리를 가지고 있는 디렉토리들을 지원한다  

       ( 이름, 사이즈, 생성 시기, 최근 변경일, 주인, 등 )


   - OS는 반드시

     - 파일과 디렉토리를 생성과 삭제할줄 알아야한다.

     - 파일과 디렉토리를 다뤄야 한다.

       읽고, 쓰고, 확장하고, 수정하고, 복사, 방어 등등

     - 일반적 높은 수준의 서비스를 제공해야한다.

       백업, 할당 등등


메모리 관리자

 - 주요(메인) 메모리

   - CPU에 접근 접근 저장소를 제공한다.

   - 프로세스들은 반드시 실행하기 위해 메인메모리에 있어야한다.


 - OS는 반드시

   기계적으로는

    - 메모리 사용의 트랙을 가지고 있어야한다.

    - 사용하지 않은 메모리의 트랙을 가지고있어야한다.

    - 메모리 공간을 보호해야한다.

    - 프로세스들에 대한 공간을 할당, 해제를 해야한다.

    - 메모리와 디스크 사이 프로세스들을 스왑해야한다.


 - 정책적으로는

   - 메모리에서 각각 프로세스가 로드될때 결정할줄알아야한다.

   - 얼마나 많은 메모리 공간을 각각 프로세스에 할당해야할지 결정해야한다.

   - 프로세스가 메모리에서 제거되야만할때를 결정해야한다.


디스크 관리자

 - 디스크

   - 파일 시스템 아래에 실제 하드웨어가 있다.(하드웨어 위에 파일시스템을 얹저놓음)

   - 모든 유저 프로그램과 데이터, 어플, 전체의 OS를 저장할만큼 충분히 크다.

   - 끈질긴 시스템 실패를 견딘다


 - OS는 반드시

   - 디스크 공간을 낮은 수준으로 관리해야한다.

     - 사용된 공간의 트랙을 가지고있어야한다.

     - 사용되지 않은 남은 공간의 트랙을 가지고있어야한다.

     - 배드블럭 트랙을 가지고 있어야한다.

   

   - 낮은 수준의 디스크 기능들을 관리한다, 예를들면

     - 디스크 동작의 스케줄링

     - 헤드의 움직임


   - 디스크 관리자와 파일 시스템 관리자 사이의 괜찮은 라인을 기록한다.



시스템 콜

 - 프로세스 컨트롤

   - 끝내거나 도중에 프로그램을 끝낼 수 있다.( 강제종료 )

   - 다른 프로그램을 불러오거나 실행할 수 있다.

   - 프로세스를 생성하거나 죽일 수 있다.

     - get/set 특성들로

     - 명시된 시간을 기다리기

     - 이벤트를 기다리거나 신호 이벤트를 기다린다.


 - 파일 관리(조작)

   - create, open, read, write, close, delete를 할 수있다.(파일을)

   - get,set 특성을 이용할 수 있다.


 - 디바이스 관리(조작)

   - 디바이스를 request, read, write, release 할 수 있다.

 

 - 정보

   - get / set time / date 같은 기능 가능