[반효경 운영체제 학습] 03

선을로·2023년 1월 18일
0

운영체제란 무엇인가? 복습

  • 운영체제의 의미를 좁은 의미와 넓은 의미로 분류할 수 있는데
  • 좁은 의미)
    커널: 운영체제의 핵심적인 부분,메모리에 항상 상주하는 부분.
    PC가 부팅이 되고나서 메모리에 올라와 있는 것을 말함.
  • 넓은 의미)
    커널 and 메모리에 상주하지 않는 부분: 일종의 독립적인 실행파일을 지닌 시스템을 전반적으로 관리하는데에 필요한 유틸리티
- 여러 사용자. 여러 프로그램들이 PC를 편리하게 사용할 수 있는 인터페이스를 제공한다. 즉,각각의 사용자나 각각의 프로그램들은 하드웨어가 어떻게 사용되고 있는 지 몰라도 자기 혼자만 이 PC를 사용하고 있다고 생각하고 사용하면 알아서 운영체제가 하드웨어를 다뤄줌.
  • 구체적으로는 자원을 효율적으로 관리한다.
    (소프트웨어 자원도 있지만, CPU나 메모리 같은 하드웨어적인 자원도 포함)
    CPU는 계산이 빠르지만, 뭘 계산해야할 지 판단하는 역할을 한다.

운영체제의 분류


동시 작업 가능 여부

  • 아주 초창기에는 단일 작업 위주로 있었다함.
    하나의 프로그램이 끝나기 전엔 다른 프로그램은 시작도 못하게 하는 운영체제
  • 지금은 다중 작업 위주의 운영체제들이 쓰인다함.

사용자의 수

- 보통 혼자만 쓸 수 있게 하는 운영체제가 단일 사용자 운영체제. - 다중 사용자(multi user)용 운영체제는 하나의 컴퓨터를 여럿이서 쓴다는 말이 아니라, 하나의 서버PC에 여러 PC들이 터미널 형태로 사용할 수 있는 운영체제(유닉스, 리눅스) 보통 리눅스를 서버 컴퓨터(클라우드)에 설치해서 여러 사용자가 접속할 수 있게 하지만, 자기 PC에다가 설치해서 싱글로도 사용할 수 있다.

처리 방식

  • 일괄 처리(batch processing): 요즘은 안 쓰이는 방식인데, 예로 들어 천공카드(Punch Card)처럼 작업 요청의 내용을 모아서 한꺼번에 처리해야 함.
    (요즘은 입력하면 입력한 대로 바로 처리하는 처리방식이 많이 쓰여서 별로 안 쓰이는듯?)
- 시분할(time sharing): 범용 컴퓨터 시스템, 범용 운영체제 등에 사용되는 방식으로, 다중 작업이자 다중 사용자이자 시분할을 하는 운영체제임. 시간을 조금씩 분할해서 쓴다. interactive(상호적인)방식이라 입력하면 바로 결과가 나올 수 있게.. - 실시간(Realtime OS): 정해진 시간(데드라인) 안에 수행 되도록 만족 시켜야한다.아니면 오류 발생한다는듯. 예를 들어 시분할의 경우 자원이 필요이상으로 많이 쓰여야하면 시간 지연이 된다거나 하는데, 실시간은 꼭 정해진 시간 안에 처리되도록 해야한다. - 실시간 시스템의 개념 확장 - Hard realtime system (경성 실시간 시스템): 정해진 시간을 어기면 문제가 발생하는 시스템 - Soft realtime system (연성 실시간 시스템): 정해진 시간을 어긴다해서 큰 문제는 발생하지 않는 시스템 ex) 동영상 처리하다가 데드라인을 넘겼다 해서 문제 발생이 아니라, 동영상을 지연 시키고 다른 작업으로 넘어가는 식..

따로 조사해보니까 실시간 운영체제는 임베디드 쪽에 쓰인다는 듯.

몇가지 용어

  • 멀티태스킹(Multitasking): 컴퓨터 안에 프로그램 여러개 돌리는 것.
  • 멀티프로그래밍(Multiprogramming): 메모리 측면에서 보는 용어로 메모리에 여러 프로그램이 동시에 올라가있는 상황
  • 타임 쉐어링(Time sharing): 시간을 쪼개서 쓴다.CPU가 짧은 시간 간격으로 쪼개서 쓰는 것. CPU쪽을 좀 더 강조하는 말.
  • 멀티프로세스(Multprocess)

결국 위에 말하는 것들은 컴퓨터 안에서 프로그램 여러개를 돌릴 수 있는 말

  • 멀티프로세서 : 컴퓨터 안에 CPU가 여러개 붙어 있는 것.
    동시에 여러 프로그램들이 CPU 여러개 안에서 수행 될 수 있다는 것.
    때문에 하나의 메모리를 여러 CPU가 공유해서 쓰다보면 충돌이 생길 수 있는등 복잡한 문제들이 발생할 수 있는데
    이 부분에 대해서는 설명 안하신다함 (따로 알아봐야할듯)

운영체제의 예

유닉스 (UNIX)

  • 리눅스 이전에 나온 운영체제로
    서버를 위한 운영체제. 여러 사용자와 여러 프로그램을 관리하기 때문에 복잡한 운영체제다.
  • 단순히 하드웨어를 관리하면서 다중 사용자와 다중 프로그램을 관리하려하다보니까 다루기 힘들었다.
  • 때문에 C언어를 만들었다함.
    원래는 하드웨어적인 프로그래밍을 하려하면 어셈블리어로 하드웨어로 직접적으로 코딩했었는데,
    그게 너무 어렵다보니까 C언어를 만들었다함.
    유닉스의 경우. 하드웨어를 다룰 때 웬만한거는 어셈블리어를 쓸 필요 없이 C언어로 프로그래밍 한다함
  • C언어 이전에도 고급언어들이(사람이 쓰기 편한) 있었지만,
    하드웨어를 다루기에 적합하지 않았다함.
    반면, C언어는 하드웨어랑 가까운 사이라 함.
  • 운영체제를 만드는게 너무 힘들어서
    C언어를 만들었고,
    C언어로 만든 운영체제가 유닉스라 함.
  • C언어로 만들었기 때문에 어셈블리어에 비해 수정이 용이하고,
    여러 아키덱쳐에 호환이 되기 때문에 어디서든 컴파일 할 수 있고 높은 이식성
  • 커널을 최소한의 것만 만들어서 효율적이다.
  • 시스템이 커지면 확장 용이.
  • 여러 버전이 나왔는데 일부는 유료 판매용 소스라함.
    오픈소스인 리눅스가 나오면서 리눅스 업데이트가 지속적으로 되고 있다는 듯.
  • 유닉스 계열은 서버 or 대형컴퓨터를 위해서 다중 프로그램, 다중 사용자를 위해 만들어진 운영체제인 반면
    DOS는 단일사용자를 위해 만들어진 운영체제.
  • DOS 시절엔 단일프로그램 운영체제였다가,
    윈도우즈라는 다중프로그램 운영체제로 바뀌면서
    불안정한 버그가 좀 있었다함.
    (요즘은 그런 일이 드물지만, 윈도우즈가 중간에 꺼지는 버그 때문에 365일 안정적으로 유지가되는 유닉스계열이 서버쪽에 많이 쓰였다함.)

0개의 댓글