[OS] 운영체제의 기능

parkheeddong·2023년 3월 9일
0

Operating System

목록 보기
3/63

1. 편의성을 위해 유저 인터페이스를 제공한다.


1) CLI (Command Line Interface)

= CUI (Character User Interface)

  • 과거에 사용한 유저 인터페이스
  • 명령어 인터페이스는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.
  • 실행파일에 내릴 수 있는 명령 등을 사용자가 알고 있어야 한다.
  • 명령을 사용자가 타이핑하면, 명령이 실행되는 방식.

2) GUI (Graphical User Interface)

  • 그래픽 사용자 인터페이스(graphical user interface, GUI)는 사용자가 편리하게 사용할 수 있도록 입출력 등의 기능을 알기 쉬운 아이콘 따위의 그래픽으로 나타낸 것이다.
  • 명령어를 사용자가 암기할 필요 없이, 아이콘을 클릭하며 명령을 내릴 수 있다.
  • 지금까지 사용되는 방식으로서, MS 윈도우즈에서 사용되고 있음

3) EUCI (End-user Comfortable Interface)

  • 개발자가 아닌, 사용자가 시스템을 편하게 이용할 수 있도록 하는 인터페이스

(1) HCI (Human-Computer Interaction)

  • 인간컴퓨터 상호작용
  • 인간과 컴퓨터 간의 상호작용(사용자 인터페이스)에 대해 연구하는 학문 분야

(2) UX (User eXepreience)

  • 사용자 경험을 의미하며, 사용자가 어떤 서비스를 이용하며 느끼는 종합적 만족을 의미한다.
  • EUCI 는 어떻게 하면 사람이 컴퓨터를 편리하게 사용할 수 있을까에 대한 연구이다.
  • 얼굴 인식, 음성 인식을 이용하여 컴퓨터에게 명령을 내리는 기술 등이 개발되고 있으며, 별도의 장비가 필요하기 때문에 독립적인 학문으로 존재





2. 자원을 관리한다.


1) 프로세서(CPU) 관리

(1) 프로세스 스케줄링

  • cpu는 하나인데 p1, p2, p3 등 여러 프로세스가 cpu를 사용하려고 한다. 이 때 여러 프로세스 중 순서를 정하는 일을 '프로세스 스케줄링'이라고 한다.

(2) 프로세서 할당

  • cpu1, cpu2, cpu3 등 여러 cpu가 있고 프로세스 p1이 있을 때, p1을 어떤 cpu에 할당할지 결정한다. p1이 연산을 가장 많이 해야 하면 연산에 특화된 cpu에 할당
  • 즉 여러 cpu 중 어느 cpu에 프로세스를 할당할지를 결정하는 과정

2) 메모리 관리

컴퓨터시스템의 주기억장치(메모리) 공간은 커널공간과 유저 스페이스로 이뤄져 있는데, 대부분 유저 스페이스이다.

(1) 멀티 유저, 멀티태스킹 시스템에서의 메모리 관리

  • 메모리 공간을 분할하여 어느 공간을 어느 프로세스에게 할당할지 결정한다.
  • 메모리를 반납시키는 일을 관리한다.
  • 메모리의 빈 공간을 관리하고 파악한다.
  • 메모리를 보호한다.(p1의 메모리 공간을 p2가 접근하지 못하게 보호)

(2) 메모리 할당 기법들 (Memory Allocation Schemes)

  • Total Contiguous Allocation
  • Virtual Memory System(가상 메모리 시스템)

3) 파일 관리

  • 컴퓨터시스템의 파일은 보통 hierarchy 구조이다. 루트에서 시작해서 sub directory로 갈라지는 계층적 트리의 형태를 띠고 있다.

  • 그러나 사람이 보는 이러한 hierarchy 구조(User View)와 달리 Kernel은 블록 시스템(Kernel View)으로 본다. 0번, 1번, 2번으로 이어지는 Block들의 연속으로 본다.

  • Kernel이 이러한 블록 시스템 내에서 사용자가 원하는 파일을 정확히 읽어서 전달하는 일을 수행해야 한다.

(1) 파일의 생성과 삭제

(2) 디렉토리의 생성과 삭제

(3) 파일/디렉토리의 manipulation(읽기, 쓰기, 찾기) 기능을 지원

(4) 파일이 디스크 블록의 어디에 있는지 맵핑하고 파악하는 일

(5) Storage의 빈 공간을 관리

(6) Storage Space 공간을 할당하는 일

  • 파일 시스템 백업 서비스는 운영체제의 기능이 아니다.

4) I/O 관리

(1) 입출력

  • CPU에서 실행 중인 프로세스가 갑자기 입출력을 하고 싶어하면, OS에 "시스템 콜"을 요청한다.
  • 커널 OS Kernal로 내려와서 루틴들이 실행되면서 원하는 I/O Device Driver로 찾아가서, 해당 디바이스에 입출력 명령을 내린다.
  • I/O Device가 입출력을 수행한다.
  • 입출력이 끝나면 OS에 "인터럽트"를 걸고, 데이터를 어플리케이션 프로세스에게 전달한다.
  • 실행중이던 프로세스는 값을 전달받기 전까지 대기 상태로 있는다.

(2) Buffer Pool

  • 유저 프로그램이 OS 커널공간에 '시스템 콜'을 하면, 디바이스 드라이버에 입출력 요청을 보낸다.
  • 그 요청에 따라 읽혀진 데이터는 'Buffer Pool'에 전달되고, 그 중 필요한 데이터만 읽혀서 유저 어플리케이션에 전달된다.
  • Buffer Pool 없이 전달할 수도 있지만 대용량 데이터를 전달할 경우 Buffer Pool을 이용하게 되는데, 이후에 또 요청이 들어올 때 만약 Buffer Pool에 있는 데이터면 그것을 사용하여 서비스하므로, i/o 디바이스에 대한 접근 시간을 감소시킬 수 있다.

5) Secondary Storage 관리 (디스크 관리)

  • 추후 다룰 예정





3. 프로세스를 관리한다.


1) 프로세스 관리

(1) 프로세스

  • 프로세스란, "실행중인 프로그램"(Program in Execution)을 의미한다.
    해당 프로그램이 cpu에서 실행되고 있다는 뜻은 아니고, 해당 플그램이 어플리케이션에 submission 되어 있다(명령 내려졌지만, 아직 종료되지 않았다. 메모리 대기 / cpu 실행 / 입출력 상태를 모두 통틀어서 의미함)
  • 사용자가 요청을 하거나 사용자 프로그램을 실행시켰을 때, 이를 서비스하기위해 만들어진 entity를 '프로세스'라고 한다.

(2) 프로세스 관리의 기능

  • 프로세스 생성
  • 프로세스 삭제 (프로세스 종료)
  • Dispatch(Schedule) : 어떠한 프로세스에게 cpu를 할당해 준다.
  • Preemption : cpu를 사용중이던 프로세스에게서 cpu를 빼앗는다.
  • Block : 프로세스가 스스로 cpu 사용을 그만두고 다른 사용 요청(i/o 등)
  • Suspension/Resumption : 프로세스에게 메모리 반납/메모리를 할당
  • Process Synchronization, Inter-process Communication:한 프로그램이 메시지를 보내고 다른 프로그램이 받을때의 동기화, 프로세스 간 통신을 위한 기본 메커니즘으로서 '동기화' 필요
  • Deadlock handling : 데드락이라는 현상이 발생할 때 해결

(3) 프로세스 관리의 데이터 구조 PCB

= Process Control Block

  • 프로세스 관리를 위해 운영체제 커널이 사용하는 자료구조. 일종의 테이블 같은 구조.
  • 프로세스의 ID 번호, 입출력 여부, 우선순위, 현재 CPU 사용여부 등 프로세스에 대한 여러 메타 데이터를 PCB 영역에 저장한다.
  • PCB 영역은 프로세스마다 존재하며, 프로세스가 20개면 PCB도 20개가 있다.
  • PCB 영역은 메모리의 커널 공간 안에 있다.

2) 스레드 관리




4. 네트워킹, 보안을 관리한다.

  • 네트워킹 프로토콜은 4단계(app.l.p - tcp - ip - mac)로 이뤄져 있는데, tcp와 ip 프로토콜은 운영체제에 들어 있다.
  • mac은 하드웨어에 implement되어 있고, app.l.p는 어플리케이션에 implement되어 있다.
  • 즉 tcp와 ip는 운영체제에 있는데, 이 부분은 운영체제 교과목이 아닌 네트워크개론에서 배운다.

[이미지 출처]

https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9_%EC%A4%84_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4#/media/%ED%8C%8C%EC%9D%BC:Bash_screenshot.png https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%BD_%EC%82%AC%EC%9A%A9%EC%9E%90_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4#/media/%ED%8C%8C%EC%9D%BC:GNOME_3.32.1.png

0개의 댓글