본문 바로가기
창고 3/[Dev] My Readme

운영체제 기초 2

by 부엉이의 정보 창고 2021. 12. 27.
728x90

운영체제 구조

윈도우, 맥, 우분투 등 각각의 운영체제의 내부 구조는 많은 차이점을 가지고 있으나, 공통/핵심적으로 1) 멀티 프로그래밍 2) 멀티 태스킹을 수행한다. 멀티 프로그래밍과 멀티 태스킹은 운영체제의 핵심 역할이라 할 수 있다.

멀티 프로그래밍(Multiprogramming)

멀티 프로그래밍의 목적은 CPU의 효용성을 증가시켜 여러 가지 프로그램을 동시에 실행하는 것에 있다.

메인 메모리 RAM은 Job pool에서 수행해야 할 작업 중 일부를 가지고 온다(RAM의 용량 한계로 인해 전체를 가지고 오지 않음).

  • Job : code + data
  • Job pool : a place where a group of jobs are stored, awaiting main memory and CPU allocation.
  • OS fetches the some of the jobs into RAM, addressing multiprogramming.

멀티 프로그래밍이 아닌 경우 CPU는 수행하던 job이 끝날 때까지 대기하고(CPU being idle), job이 끝난 것을 확인한 후에야 다음 job으로 넘어갈 수 있다.
멀티 프로그래밍에서는 CPU는 항상 수행해야 할 job을 가지고 있으며, 수행하던 job이 끝날 때까지 대기하지 않고(CPU released) 다음 job을 수행한다(CPU not being idle).

멀티 프로그래밍의 경우 컴퓨터 자원(CPU, RAM, Jobs...)이 효율적으로 관리되게 하나, 유저에게 컴퓨터 시스템에 대한 상호작용을 제공하지는 아니한다.

멀티 태스킹(multitasking or time sharing)

멀티 태스킹의 주된 목적은 여러 프로그램을 실행하는 동시에 여러 유저에게 상호작용을 제공하는 것에 있다. CPU는 A=>B=>C=>A=>C=>B 등 프로그램 간의 전환(switch)을 매우 빠르게 제공하여 유저 입장에서는 동시에 모든 프로그램을 제어(상호작용)하는 것처럼 느끼게 된다.

멀티 태스킹은 CPU 스케쥴링과 멀티프로그래밍을 통하여 유저에게 a time-share computer를 제공함으로써 이루어진다.

★★★ What is process and instance?

운영체제 서비스

운영체제는 프로그램 실행에 필요한 환경 구성을 유저에게 제공한다.

  1. 유저 인터페이스 : CLI(Commnad Line Interface)와 GUI(Graphical User Interface). CLI는 텍스트 기반으로 운영체제에게 명령을 내리며, GUI는 그래픽 기반으로 유저<=>운영체제 상호작용을 돕는다.
  2. 프로그램 실행(program execution) : 운영체제는 아래와 같이 프로그램을 메모리에 로드하고, 프로세스를 실행시킬 수 있어야 한다.
Source code => Compiler => Object Code => Executor => Output
  1. 입/출력 실행 : 유저는 직접적으로 입출력 기기의 실행에 관여할 수 없다. 예를 들어, 유저가 키보드를 사용할 때 어떤 문자를 입력할지 결정한다고 생각할 수 있으나, 실제 키보드 입출력을 관리하는 것은 운영체제의 몫이다. 입출력 실행은 운영체제의 가장 중요한 역할 중 하나이다.

  1. 파일 시스템 관리 : 운영체제는 파일 접근 및 CRUD 기능을 관장한다.
  2. 프로세스 커뮤니케이션 : 네트워크 상에서 프로세스 간 정보 교류가 필요할 경우 (교류가 같은 컴퓨터/서로 다른 컴퓨터 상에서 이루어져야 할 경우), 운영체제가 이를 관리한다.
  3. 에러 감지 : 운영체제는 CPU, I/O, 하드웨어 등에서 발생할 수 있는 에러를 감지하고, 에러가 발생할 경우 전체 컴퓨터를 멈추는 것(cease)이 아니라 필요 기능만을 멈출 수 있도록 기능한다.
  4. 자원 분배(Resource allocation) : 자원 분배를 요구하는 프로세스/유저를 확인하고 필요 자원을 분배한다. 자원 분배는 운영체제의 중요 기능 중 하나이다.
  5. 감사(accounting) : 특정 유저가 사용한 자원의 양과 종류를 추적한다. 추적된 정보는 추후 컴퓨터 시스템의 구성에 참고될 수 있다.
  6. 보호 및 보안 : 보호 => 여러 프로세스가 한꺼번에 실행되고 있을 경우, 각각의 프로세스의 실행이 서로 영향을 주어서는 안된다. 운영체제가 이를 관리한다. 보안 => 기기에 대한 외부 접근을 제한하고 그 접근 시도를 기록한다.

유저 인터페이스

  1. CLI : 커맨드라인 인터페이스. 텍스트로 직접적으로 운영체제에게 명령을 내림. 커맨드 인터프리터(shells)는 커맨드가 떨어질 경우 1) 커맨드 자체를 코드로 저장하고 있거나 2) 커맨드에 해당하는 프로그램을 불러옴
커맨드 라인 인터페이스 <=> 운영체제 커널(커맨드 인터프리터)

커맨드라인 인터페이스, 인터프리터 예시

Windows PowerShell 실행 후 아래 실습을 진행

  • pwd : print working directory
  • ls : list what is in the pwd
  • mkdir hello : make directory named 'hello'
  • rm -rf hello or rmdir hello : remove the hello directory

-r command deletes the folder recursively -f command removes 'Read only File' without asking

  1. GUI : 그래피컬 인터페이스. 알아보기 쉬운 그래픽 요소를 활용해 운영체제에게 명령을 내림.
728x90

댓글


loading