Keep going

운영체제 서비스 본문

School/운영 체제

운영체제 서비스

코딩천재홍 2021. 4. 12. 03:02

운영체제 기본 목표 - 프로그램 실행할 수 있는 환경 제공

프로그램 실행하려면 interface가 있어야 한다.

 

운영체제가 제공하는 기능들 서비스 사용하기 위해 사용자 Interface 사용

  1. Command LIne (명령창)
  2. GUI
  3. 터치 스크린
  4. Batch (옛날 이야기, 설명 거의 안함)

 

사용자 인터페이스를 통해 사용할 수 있는 운영체제 서비스

  • 프로그램 실행
    • 우리가 프로그램을 실행시킬 수 있는 서비스
    • 프로그램 실행 되면 운영체제는 프로그램을 메인 메모리에 적재, 그 프로그램을 실행, 실행 끝나면 정리
    • 실행하면 실행과정에서 여러가지 입출력 연산 필요
  • 입출력 연산 제공
    • 입출력 장치 도구, 입출력 해지 → 운영체제에 의해서 제공
  • 파일 관련 시스템
    • 프로그램이 실행되는 과정에서 파일의 데이터를 읽고, 쓰고, 할 수 있어야 되기 때문에 파일 만들고, 지우고,쓰고 읽는 기능 제공, 디렉토리에서도 마찬가지.  파일 정보, 디렉토리 정보도 관리
  • 통신 기능
    • 프로세스가 2개 이상 돌아간다면 정보 교환 필요, 2개 이상의 프로세스는 같은 컴퓨터 일 수도 있고 멀티 네트워크로 연결되었을 수도 있음
    • 정보 주고 받는 방식 2가지
      • 공유 메모리 - 두개의 프로세스 같은 메모리
      • 메시지 전달 - 패킷을 한 프로세스가 다른 프로세스로 전달 
  • 오류 탐지
    • 디스크가 고장나서 파일이 읽히지 않을 때, (메모리 오류, 정보 파괴, 프린터 동작X 같은 다양한 오류 발생) 소프트웨어 오류, 장치 오류를 발견하고 적절한 조치 취함
    • 오류에 따라 적절한 조치를 취해서 시스템이 중지하지 않고 잘 동작하도록 관리
    • 오차나 오류 발생했을 때 운영체제가 제공할 수 있는 서비스
      • 나중에 사용자 프로그램이 오류를 발생시켰다면 오류 어디서 발생했는지 발견하고, 수정 위해 디버깅 위해 현재 메모리 상태를 파일에 갖다 쓰는 dump 기능

 

사용자 프로그램 실행과 관계 없이 시스템 자체를 효율적으로 운영 하기 위한 서비스

  • 자원 할당
    • 시스템을 여러명의 사용자가 사용하거나 여러개의 작업이 동시에 진행되고 있을 때 CPU시간, 메인 메모리, 파일 이런것들은 사용자나 작업에게 할당해서 시스템을 효율적으로 돌아갈 수 있도록 관리
  • 계정 관리
    • 어떤 사용자가 언제 로그인을 했고 시스템은 얼마나 썼고, 메모리를 얼마나 썻는지에 대한 정보를 기록해둬서 시스템 관리 기능차 계정 관리가 필요하다.
  • 보호, 보안
    •  보호
      • 한 시스템 내에서 서로 다른 사용자끼리 보호를 하는 것
      • 시스템의 여러 가지 자원에 대해서 접근 통제 하는 것
    • 보안 
      • 권한 없는 외부 사용자가 시스템 사용하려고 한다거나 외부 사용자가 시스템에 있는 정보를 불법적으로 가지고 가려는 것을 방지하는 것

제일 아래 하드웨어 , 하드웨어를 운영체제가 싸고 있다

사용자나 응용 프로그램이 있다면 사용자나 응용 프로그램들은 사용자 인터페이스를 통해서 여러가지 기능들을 사용하고 시스템 프로그램은 사용자 인터페이스를 사용하는 것이 아니라 시스템 호출 인터페이스를 이용해서 운영체제가 제공하는 기능들을 사용한다.

 


 

사용자 인터페이스 종류

  • CLI (명령줄 해석기)
    • 한 사용자가 한 명령을 하면 그 줄을 읽어서 실행하는 프로그램
    • 운영체제 일부로 구현되었을 수도 있고, 운영체제 외부에 시스템 프로그램으로 구현될 수도 있다.
    • windows 명령창, unix shell → 운영체제 외부 시스템 프로그램으로 구현
    • shell은 명령어를 어떻게 실행하느냐
      • shell 안에 x라는 명령어를 실행하는 파트를 shell 이 가지고 있을 수 있다. x라는 명령을 실행하는 함수가 shell안에 있어 shell 은 함수 호출만 하면 된다. command가 shell안에 built-in 으로 들어가 있는 형식
      • x라는 명령어 실행하는 프로그램 따로 있는 경우. shell이 프로그램 실행시켜서 명령어를 실행하는 방법. 외부파일로 명령어가 존재하는 경우 shell 을 변경안해도 새로운 프로그램 만들어서 명령어들을 얼마든지 만들 수 있다. 
  • GUI (desktop metaphor)
    • 화면에 폴더, 브라우저 등 여러가지 창, 아이콘 등을 마우스 키보드로 프로그램 실행
    • 처음 만든 회사 Xerox PARC (복사기 회사)
    • 애플 맥킨토시에서 널리 사용 
    • windows -gui 도입, mac - aqua hui(유닉스 기반 쉘, 명령 가능),  unix,linus - CED, KDE, GNOME
    • 대부분 GUI와 CLI를 같이 제공하고 있다.
  • Touchscreen interface
    • 모바일 폰, 패드 에서 많이 사용
    • 터치를 이용해서 명령어를 실행 
    • 음성인식 하기도 함

 

시스템 호출 (System Calls)

  • 운영체제가 프로그램한테 제공하는 인터페이스
  • high level language로 시스템 호출 사용함 (c, c++, java)
  • 시스템 호출을 프로그램에서 바로 사용 하는게 아니라 OS가 외부에 제공하는 API를 사용해서 시스템 호출 안으로 들어가서 시스템 호출을 사용하는것
  • API 종류
    • WIN 32 API, UNIX,LINUS, MAC OS 통일 - POSIX(이식성이 있다) , JVM

 

 

시스템 호출 어떻게 일어나느냐

  • 시스템 호출 인터페이스는  C 컴파일러나 링커에 구현되어 있다.
    • C 컴파일러는 운영체제에서 제공하는 시스템 호출 리스트를 가지고 있고 시스템 호출마다 번호를 매겨서 가지고 있다.
  • 시스템 호출 인터페이스는 사용자가 함수 호출하게 되면 어떤 시스템 호출을 불러야겠다 찾아내고 적절한 조치를 취해서 운영체제한테 시스템 호출하게 된다.
  • 시스템 호출 인터페이스가 OS를 호출할 때 인수 넘겨준다. (FLIE, 버퍼 위치, COUNT)
  • 시스템 호출 사용할 때 호출 바로 사용하는 것이 아니고 운영체제가 제공하는 API를 사용하기 때문에 API 맞게 사용한다면 시스템 호출 인터페이스가 어떻게 운영체제 호출하는지 신경 안써도 되고 프로그램 짤 수 있다.

 

 

시스템 호출 인수 전달 방식

  • 레지스터 이용
    • 레지스터에 인수 집어넣고 운영체제 호출
    • 레지스터 수에 따라서 전달할 수 있는 인수의 수가 한정
  • 메모리 
    • 인수 저장, 주소를 레지스터에 넣고 전달 - LINUX, SOLARIS
    • 전달할 인수의 수 한계 X
  • RUNTIME STACK
    • 사용자 프로그램 실행 되고 있으면 프로그램들은 RUNTIME STACK이라는 실행 스택 가지고 있다.
    • 사용자 프로그램이 인수를 실행스택에 집어놓은 후 운영체제를 호출한다.
    • 운영체제가 인수를 꺼내와서 사용하고 다시 가져오고 그런 방식

 

 

시스템 호출의 종류

  • 프로세스를 제어하는 호출들
    • 프로세스 만들고 종료
    • 실행 중단, 오류 상황 강제 종료
    • 프로세스에 특정한 프로그램 적재, 실행
    • 프로세스 속성 가져오고 속성 지정
    • 특정 시간 동안 중단
    • 어떤 사건이 실행될때까지 기다리고 사건이 일어났다고 알려주기도 함
    • 메모리 할당, 해제
    • 오류 발생 했을 때 현재 프로세스 프로그램에 실행상태를 dump
    • 여러 프로세스가 데이터를 공유한다면 데이터를 LOCK 하는 기능
  • 파일 관리
    • 파일 만들고 삭제
    • 파일 열고 닫기
    • 읽고 쓰고 읽고 쓰는 위치 옮기기
    • 파일 속성 가지고 오고 지정
  • 장치 관리
    • 장치 요청, 해지
    • 읽고 쓰고 읽고 쓰고 재위치
    • 장치 속성 읽고 지정
    • 장치를 시스템에 붙이거나 떼거나 할 때
    • UNIX 에서는 DEVICE 관리 API 가 파일 관리 API와 통일
  • 정보 관리
    • 현재 시간 가지고오고 지정
    • 현재 시스템 데이터 (사용자, CPU 사용률) 가져오고 지정
    • 여러가지 프로세스, 파일, 장치 속성 가지고오고 지정
  • 통신 기능
    • 통신 연결 만들고 지우고
    • Message passing
      • 서버(daemon)가 접속 기다리고 있고, CLIENT가 서버에게 접속 요청, 서버 승인 → CONNECTION LINE 
    • Shared memory
      • 공통으로 메모리를 두고 메모리에 쓰고 읽기하면서 메모리 두개를 공유
  • 정보 보호
    • 자원에 접근하는 것을 통제하는 기능
    • 현재 통제가 어떤 상태인지 정보를 가지고 오기
    • 사용자 접근 허용하거 거부하기

 

System Programs

운영체제 이외에 하드웨어가 있고 하드웨어를  os가 감싸고 있고 os 이외에 시스템 프로그램들이 같이 제공하게 된다.

사용자가 이용하는 것은 cli, api 뿐만 아니라 시스템 프로그램도 같이 이용한다. 사용자들이 생각하기에 system program 이 os라고 생각하기 쉬운데 os는 더 안쪽에 있고 시스템 프로그램 서비스는 사용자 편의를 위해 더 많은 서비스가 제공되는 것이 아니다.

- 파일 탐색기

- 작업 관리자 (디스크 할당량, 로깅, 시스템 속성 -레지스트리)

- 텍스트 편집기

- 컴파일러

- 파일 적재 실행 기능 (GUI 통해서)

- 외부 파일 가져오기 (WEB BROWER 통해서)

- Background Services 

 시스템이 시작될 때 생겨나서 끝날 때 까지 돌아가는 시스템(네트워크 접속 기다리고 있는 ?) - service, daemon이라 부른다.

 시스템 시작되서 일부 실행하다 끝나는 시스템 (파일 시스템 체크)

 

'School > 운영 체제' 카테고리의 다른 글

운영체제 디버깅  (0) 2021.04.12
운영체제 구조  (0) 2021.04.12
COMPUTING 환경  (0) 2021.04.07
운영체제 동작  (0) 2021.04.05
컴퓨터 시스템의 구성  (0) 2021.04.04
Comments