PintOS - 키워드

이후띵·2021년 12월 23일
0

PintOS

목록 보기
2/31

.exe - 프로그램
프로세스 - .exe 를 실행하고 있는 상태 (프로그램을 실행하고 있는 상태)
-> 운영체제는 여러개의 프로세스를 돌리고 있다.

운영체제는 동시적, 병렬적, 혹은 이 둘의 혼합으로 프로세스를 돌린다.

동시성은 프로세스 하나가 Context Switch 를 통해 여러개의 작업을 일부분씩 하는 것.

병렬성은 프로세스 하나에 코어 여러개가 달려서 각각 동시에 작업들을 수행하는 것.

한 프로세스 안에도 여러 개의 작업들이 동시에 진행될 필요가 있다.
-> 여러 개의 Thread들이 여러 개의 작업을 동시에 진행할 수 있다.

프로세스들은 컴퓨터의 자원을 분할해서 쓰지만, 쓰레드들을 프로세스마다 주어진 전체 자원을 함께 사용한다. 속도와 효율 면에서는 낫겠지만, 프로세스에 공유된 자원을 쓰레드 두개가 동시에 공유된 자원에 작업을 하면 오류가 발생할 수도 있다. (오류의 원인을 찾기 힘든 경우도 많다.)

다행히도, 여러 개의 쓰레드를 쉽고, 안전하게 사용할 수 있는 도구, 프로그래밍들이 존재한다.

원시적인 방법의 예시로,
java 의 syncronized 블럭이 있다. syncronized 블럭은 한번에 한 쓰레드만 작업이 가능하기 때문에, 한 프로세스에서 여러 개의 쓰레드가 공유된 자원을 동시에 사용할 때 발생하는 문제들을 방지할 수 있다.


운영체제(Operating System, aka OS) 가 무엇인가?

  • 현대의 모든 컴퓨터 시스템의 배경에 실행되고 있는 소프트웨어

  • 운영체제는 소프트웨어와 하드웨어 사이의 소통을 가능하게 하여 전형적인 컴퓨터 시스템을 이루게 한다.

  • 운영체제는 컴퓨터에게 뭘 해야할 지 말할 수 있도록 한다.

  • 운영체제는 "다양한 함수"를 관리한다.

  • 운영체제 없이는 대부분의 컴퓨터는 유저에게 불친절할 것이다.

  • 대부분의 사람들은 운영체제 없이 컴퓨터와 일하는 것이 거의 불가능할 것이다.

운영체제의 함수들

  • User interface
  • File management
  • Management of hardware and peripherals
  • Processor management
  • Running of software
  • Interrupt and error handling
  • Security
  • Memory management
  • Network communication

1. User Interface

  • 사용자에게 컴퓨터와 소통할 수 있는 방법을 제공한다.

    • GUI(Graphical User Interface) <- 요즘 방식
      • Windows
      • Icons
      • Menus
      • Pointer
    • CLI(Command Line Interface) <- 옛날 방식
      • Text only

2. File management

  • 운영체제는 파일과 디렉토리를 조직화하기 위해서 파일 시스템을 생성한다.
  • 운영체제는 프로그램들에게 데이터의 저장/복구의 일관된 방법을 제공한다.
    -> 파일의 명명/정렬/삭제/이동/복사 기능 등이 포함된다.
  • Look-up tables는 파일 이름과 저장소 드라이브들의 위치를 연결시킨다.

3. Management of hardware and peripherals

  • 운영체제는 컴퓨터와 연결된 모든 디바이스들을 컨트롤하며, 각 디바이스들에게 상호작용 및 운영을 어떻게 해야하는지 알려준다.
  • 디바이스 드라이버는 peripherals 간 연결의 관리를 돕는다.
  • cf) peripherals : 주변장치

4. Processor management

  • 운영체제는 CPU를 관리한다.
  • 열려있는 소프트웨어는 반드시 RAM에 위치, 실행되어야 한다.
  • CPU 는 비로소 프로그램 실행을 시작할 수 있다.
  • OS는 프로세서 시간의 공유를 관리할 수 있다.

5. Running of software

  • 운영체제는 프로그램을 시작하고, 디자인된 것처럼 실행하도록한다.
  • 프로그램은 실행되고, 특정 운영체제의 특정 이점을 받도록 디자인 되어 있다.

6. Interrupt and error handling

  • 멀티태스킹이 가능하도록 한다.
  • 여러개의 프로그램은 RAM에 동시에 저장될 수 있지만, 한번에 하나의 프로그램만이 CPU에의해 프로세스 될 수 있다.
  • 인터럽트는 프로그램이나 프로세스가 보낸 시그널이다.
  • 운영체제는 가장 적절한 방법을 보장할 수 있도록 인터럽션에대한 우선순위를 일정하게 매긴다.
  • 입력한 task들은 CPU에의해 다뤄진다.
  • 우리는 많은 프로그램들이 동시에 실행되는 것처럼 느끼게 된다.

7. Security

  • 각 사용자의 계정과 비밀번호 생성하도록하고, 사용자끼리 서로의 데이터를 못 건드리도록 한다.
  • 사용자에게 파일이나 특정 유틸리티 프로그램에 대한 접근 권한을 준다.

8. Memory management

  • 프로그램에서 메모리를 할당, 반납할 수 있도록 한다.
  • 메모리 사용을 계속 track 한다.
  • 메모리가 부족할 때 무슨일을 해야할지 결정한다.

9. Network communication

  • 컴퓨터가 네트워크 디바이스에 연결, 소통하도록한다.
profile
이후띵's 개발일지

0개의 댓글