[OS] 1) 운영체제란

Gon Kim·2022년 9월 25일
0

OS - 반효경 교수님

목록 보기
1/7

자료 출처 : KOCW 운영체제 - 반효경 교수님

1. Introduction

1) 운영체제란?

짧게 말하면, 운영체제는 하드웨어 위에 바로 올라가는 소프트웨어이다.

소프트웨어와 하드웨어를 연결하는 소프트웨어 계층

좁은의미 - 커널

  • 운영체제 핵심
  • 메모리에 상주

넓은 의미

  • 커널 말고도 각종 유틸리티를 포함한 개념
    • 파일 복사하는 기능 등등

2) 목적?

내가 맘대로 쓴 개요를 안보고 왔다면 보고 오자! 더 이해가 잘 될 수도??

  • 컴퓨터 시스템의 자원(프로세서, 기억장치, 입출력 장치, 프로세스, 파일, 메시지 등등)을 효율적으로 관리
    • 초당 instruction을 몇 개 수행할 수 있는 cpu, 특정 크기의 ram등을 잘 관리하도록하는 역할
    • 전반적으로 컴퓨터가 막힘 없이 잘 돌아가게 하기 위해 형평성 있게, 또 효율적으로 잘~ 관리한다.
  • 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공
    • 동시 사용자/프로그램들이 각각 혼자서만 돌아가는 것 처럼 보이는 환상을 제공

3) 분류?

사실 분류에 대해 아는게 그렇게 중요한 것은 아닐 수 있다. 요즘의 거의 모든 운영체제는 다중 작업, 다중 사용자를 지원하며, 시분할 방식을 사용할 것이다. 따라서 너무 당연하게 느껴질 것이다. 그러나 당신이 경험해본 컴퓨터의 기능들이 당연한게 아니라는 것을 한번 쯤 되짚어봤으면해서 굳이 이런거까지 소개한다.

당연하다고 느꼈던게 당연하지 않았던 것이라는 것을 인지하는 순간, 남들이 너~~무 잘 만들어놔서 놓치고 갔던 것들을 캐치하는 순간! 더 이해가 잘 될 것이다@!#!@$

아래와 같은 분류 기준이 있다.

동시 작업 가능 여부

단일 작업

  • 한번에 하나만 하는 친구
  • MS-DOS 등. 보통 옛날꺼! 엘레베이터같이 특수 목적만을 달성하면 되는 경우도 단일 작업으로 가능할 수 있다

다중 작업

  • 동시에 두 개 이상의 작업 처리. 스타크래프트 하면서 디스코드 돌리는게 가능한 것~
  • UNIX, WINDOWS 등

사용자의 수

여러 사용자의 계정을 만들어 동시접근을 할 수 있나?

여러 사용자가 쓸 수 있게 한다면, 서로의 파일에 접근을 할 수 없게 해야할 것이고, 또 형평성 있게 자원을 분배하기도 해야할 것

단일 사용자

  • MS-DOS, WINDOWS

다중 사용자

  • UNIX, NT server
  • 여러 유저가 한번에 로그인해서 작업을 할 수 있는 것!

처리 방식

일괄 처리

  • 작업을 바로 처리하는게 아니라, 모아서 한꺼번에 처리하는 것
  • 현대에는 찾아보기 힘들다

시분할

  • 요즘에 많이 쓴다
  • 여러 작업을 수행할 때 작은 시간 단위를 기준으로, 각각 프로세스나 사용자에게 시간을 분배해 작업을 처리하게 하는 것
  • 타이핑했는데 한 1분 있다가 화면에 출력되면 속이 터지겠지? 그런거 방지하려고 하는거다! 처리할게 많아도 여러개를 조금씩 조금씩 처리해나가는 것

실시간

  • 정해진 시간 안에 꼭!!!! 결과가 나오는 것이 보장되어야하는 경우에 쓴다.
  • 원자로/공장 제어, 미사일, 반도체 제어 등

4) 운영 체제 예시

UNIX

  • 대형 컴퓨터를 위해 만들어짐
  • 멀티 태스킹, 다중 유저
  • 운영체제를 어셈블리어로 만들다보니 너무 힘들었어서 UNIX 운영체제를 만드려고 언어를 그냥 만들어버렸음
    • 그게 바로 C언어!!!
  • 이식성이 좋다. C언어는 기계어랑은 독립적인 언어라서!
  • 커널의 크기를 작게 만들어놓음. 커널이 최소한의 핵심적인 역할만 가져가는 것

WINDOWS

  • 개인용 컴퓨터를 위해 만들어짐
  • DOS는 단일 사용자, 단일 작업
    • 처음에 만들 때는 메모리 640KB까지만 지원하도록 만들었다고 한다. 이거 보다 더 커질일은 없을 것이라고 해서 ㅋㅋ
  • 나중에 WINDOWS 독립적으로 하나 만들었다고 한다.
  • GUI 기반, 처음에는 불안했다. 뭐 좀 돌리다보면 죽어버리고

5) 자원의 입장에서 바라보는 운영 체제

운영체제는 자원을 자~알 가지고 놀 줄 알아야한다고 했다. 걔들 입장에서 운영체제 역할을 다시 한번 바라보며 조금 정리해보자.

하드웨어 관리

일단 컴퓨터 하드웨어의 입장에서 보여지는 운영 체제의 역할을 확인해보자

CPU(Central Processing Unit)

  • 실질적인 연산이 일어나는 곳이다. 더하고 빼고 논리적인 연산 등등이 일어난다.
  • 프로그램은 이런 연산 덩어리이다. 어떤 프로그램의 연산을 CPU에게 맡길지, 그 순서를 스케쥴링 해야한다.
    • 하나의 프로그램만 먼저 쭉 처리하고 다른 프로그램을 처리해버리는 식으로 진행하면, 앞에서 1시간이 걸려버릴 경우 뒤의 것은 먹통이 된다. 동영상 다운로드 눌러놓고 친구한테 카톡 보내려고해도 그런거 안되는거임. 다운로드 다 될 때까지 기다려야하는 것

RAM(Memory Unit 중 하나)

  • CPU가 아무것도 없는 허공에서 연산할 것들을 가져오는게 아니다. 이러한 프로그램, 즉 연산 덩어리는 필요할 때 RAM에 저장된다.
    • RAM은 0, 1을 저장할 수 있는 어떤 장치이다. 연산 덩어리가 어떻게 어떻게 해석되서 0, 1로 바뀌어 여기에 저장된다고 생각하면 된다.
  • RAM에 0, 1을 무한하게 저장할 수는 없다. 당연한거다. 얘도 물리적으로 크기가 한정되어 있다. 따라서 이 친구를 잘 쪼개서 쓰는게 중요하다. 또한 컴퓨터를 잘 돌리기 위해서는 어떤 경우 잠깐 RAM에서 프로그램의 일부를 다른 곳에 내려놔야하는 경우도 있다. 다른 애한테 몰아주는게 더 좋을 때도 있기 때문이다.
    • 최대한 프로그램을 많이 올려보겠다고 너무 잘게 쪼개면 컴퓨터가 느려지고, 또 너무 큼직하게 하면 여러 프로그램을 한번에 돌리기 힘들어진다.
    • 필요할 때는 특정 프로그램들, 특히 앞으로 안쓰일거같은 애들은 내려놓는게 효율이 좋다. 이런애들은 내려놔야한다.
  • 위와 같은 경우 RAM을 어떻게 사용해먹을 것인가에 대한, 즉 메모리 관리에 대한 기준, 규칙, 정책이 필요하다.

Disk(Memory Unit 중 하나)

  • 프로그램들은 필요할 때 RAM에 올라간다고 했다. 얘들이 평소에 필요하지 않을 때 저장되어있는 곳이 DISK이다.
  • 이런 애들을 잘, 빠르게 읽어오거나 저장하기 위한 방법을 강구해야한다.
    • 연속적으로 저장하는게 나은지, 아니면 좀 쪼개서 저장하는게 나은지 생각해봐야한다.
    • 또, disk는 헤드라는 친구가 하나 하나 읽어서 저장된 정보를 확인하는 방식으로 돌아간다. 어떻게 헤드의 움직임을 최소화할지 생각해봐야한다.

I/O Device

  • 입출력 장치는 엄청 느리다. 이런 애가 다른 애들과 정보를 주고 받는 것을 어떻게 해야 좀 효율적으로 할 수 있을지도 운영체제가 결정해야한다.

그 외 자원

프로세스

  • 프로세스는 어떻게 생성하고 삭제해야할지,
  • 자원 할당과 반환을 어떻게 할지
  • 프로세스간 협력은 어떻게 할지

그 외

  • 보호 시스템
  • 네트워킹
  • 명령어 해석기

등등을 고려해야한다.

생략된 부분들이 있을 수 있지만, 이러한 것들을 고려하고 관리하는게 운영체제이다. 뒤의 것들을 매우 간단하게만 설명돼있는데, 추후 알아본다

profile
응애

0개의 댓글