1. 운영체제 - Operating System: 개요

마리 Marie·2021년 5월 15일
0

방통대컴과

목록 보기
1/1

이 글은 방통대 3학년 1학기 '운영체제'과목의 전공도서인 '운영체제'를 기준으로 작성하였습니다. 링크 된 용어들은 이곳에 작성하기에는 분량이 너무 많고 주제와 맞지 않아 링크로만 걸어놨습니다. 모든 링크는 위키피디아 페이지로 이동합니다.


운영체제의 개요

📌 운영체제

  1. 컴퓨터 하드웨어 자원을 관리하고
  2. 컴퓨터 프로그램이 동작하기 위한 서비스를 제공하는 시스템 소프트웨어

📌 운영체제의 역할

  1. 컴퓨터 시스템의 운영
    • 컴퓨터 시스템의 자원을 제어 및 관리하여 컴퓨터 시스템을 효율적으로 운영하는 역할
  2. 사용자 지원
    • 사용자가 편리하게 컴퓨터를 사용할 수 있도록 지원하는 역할

📌 컴퓨터 시스템과 운영체제

운영체제가 없던 초기 컴퓨터 시스템의 문제점

  1. 응용 프로그램이 직접 컴퓨터 시스템의 지원을 제어해야만 했음
  2. 응용 프로그램 개발자는 하드웨어에 대한 제어 방법을 잘 알고있어야만 했음
  3. 하드웨어를 여러 사용자가 공유해서 사용하는 경우, 응용 프로그램들끼리 효율적으로 서로 자원을 나눠쓰기가 어려워 컴퓨터 시스템이 제대로 동작하지 못하게 됨

시스템 안정성을 위해 운영체제 하드웨어 직접 제어 불가능

  1. 슈퍼바이저 모드(커널모드)
    • 하드웨어를 직접 제어할 수 있는 CPU의 명령어를 사용할 수 있는 모드
    • 운영체제 커널이 동작되는 모드
  2. 보호 모드(사용자 모드)
    • CPU 직접 제어할 수 있는 명렁어 사용 불가능한 모드

✔︎ 커널(Kernel)

* 커널은 커널 관련 포스팅에서 상세하게 다룰 예정

  1. 응용 프로그램과 하드웨어 사이의 가교 역할
  2. 운영체제의 핵심 요소
  3. 일체형 커널, 마이크로 커널
    • 일체형 커널(Monolithic kernel)
      1. 운영체제의 모든 서비스가 커널 내에 포함
      1. 커널 내부 요소로 존재하는 여러 서비스들이 서로 효율적으로 상호작용할 수 있음
      2. ! 모든 요소가 커널 내부에 존재하기 때문에 하나라도 오류발생 시 시스템 전체 장애
      3. UNIX와 Linux 계열
    • 마이크로 커널(MicroKernel)
      1. 운영체제 대부분의 요소들을 커널 외부로 분리
      1. 커널 내부에는 메모리, 멀티태스킹, 프로세스 간 통신(IPC) 등의 최소한의 요소만 남겨둠
      2. 서비스를 추가하여 운영체제 확장 쉬움
      3. 커널 외부 요소에 문제 발생 시 커널 자체에 영향 없음
      4. 유지보수가 용이하여 안정성 우수
      5. ! 커널 외부에 존재하는 운영체제 요소들 사이에 데이터 전달이 필요할 경우 프로세스 간 통신을 해야만 하기 때문에 성능 저하 발생

📌 운영체제 구성

  1. 프로세스 관리자
  2. 메모리 관리자
  3. 장치 관리자
  4. 파일 관리자

프로세스(Process) 관리자

  1. 프로스세들을 생성하고 삭제하며 CPU에 할당하기 위한 스케줄 결정
  2. 각 프로세스의 상태(준비, 실행, 대기 등)을 관리하며 상태 전이 처리
    CPU가 프로세스를 실행 중인지 아니면 실행을 마치기 위해 READ나 WRITE 명렁어를 기다리고 있는지 검사하여 상황에 따라 프로세스 상태를 다른 상태로

메모리(Memory) 관리자

  1. 주기억장치의 공간에 때한 요구가 유효한지 체크
  2. 적법한 요구라면 메모리 관리자가 아직 사용 중이지 않은 부분 할당
  3. 다중 사용자 환경에서는 누가 주기억장치의 어느 부분을 이용하고 있는지 계속 확인하기 위해 테이블 생성
  4. 주기억장치 반환할 시간이 되면 반환
  5. 자신이 점유하고 있는 주기억 장치의 공간 지킴

✔︎ 주기억장치

  1. 휘발성, 비휘발성, 반휘발성으로 나뉜다.
  2. 컴퓨터 기억장치 관련해서 국문보다는 영문으로 검색해서 읽는게 훨씬 좋다.
  3. 휘발성 메모리(Read-Access Memory):
    • 데이터를 저장하기 위해 전력이 필요한 메모리
    • 일시적인 데이터를 사용하려는 용도
    • RAM을 무조건 휘발성 메모리로 알고 있지만 메모리 종류에 따라 비휘발성인 메모리도 있다
  4. 비휘발성 메모리(Read Only Memory):
    • 데이터 저장 시 전력이 필요없는 메모리
    • BIOS(Basic Input/output System) 데이터를 저장하기 위해 주로 사용됨
  5. 반휘발성 메모리(Semi-Volatile Memory):
    • 비휘발성 메모리의 특징과 휘발성 메모리의 특징을 갖고 있는 메모리

장치(Device) 관리자

  1. 컴퓨터 시스템의 모든 장치 관리
  2. 시스템 설계자에 의해 결정된 스케쥴링 기법 기반으로 모든 장치를 가장 효율적으로 할당
  3. 장치 할당, 작동, 장치 반환

파일(File) 관리자

  1. 파일과 응용 프로그램일 포함하는 시스템의 모든 파일 관리
  2. 파일 접근 제한 관리 및 자원 할당, 자원 회수

📌 운영체제의 유형

일괄처리 운영체제(Batch Processing)

  1. 초창기 컴퓨터에서 사용되었던 유형
  2. 작업을 모아서 처리하는 방식
  3. 사용자와의 상호작용 없이 순차적 실행
  4. 효율성: 주어진 전체 시간 안에 처리된 작업의 수를 의미하는 처리량(throughput)와 수 시간이나 수일 동안 측정된 반환시간(turnaround time)에 의해 평가

대화형 운영체제(Interative)

  1. 시분할 운영체제
  2. 응답시간: 실시간운영체제 > 대화형 운영체제 > 일괄처리 운영체제
  3. 이용자가 자신이 프로그램을 디버깅할 떄 좀 더 빠른 처리 시간을 요구하는 이용자의 욕구를 만족시키기 위하여 개발
  4. 이용자에게 즉각적인 피드백 제공
  5. 응답시간은 사용 중인 이용자의 수에 따라 수 분 또는 수 초 안에 처리

실시간 운영체제(Real-time)

  1. 모든 운영체제 중 가장 빠른 응답시간
  2. 처리 결과가 현재 결정에 영향을 주기 때문에 데이터 처리가 극도로 빨라야 하는 환경에서 사용
  3. e.g.) 우주선 비행 시스템, 미사일 제어, 증권 관리, 은행 입출금 등

하이브리드 운영체제(Hybrid)

  1. 일괄처리와 대화형 운영체제의 결합
  2. 터미널을 통해 접속하여 빠른 응답시간 얻을 수 있음
  3. 대화형 작업량이 많지 않을 경우 백그라운드에서 배치 프로그램을 받아들이고 실행
  4. 현재 사용되는 대부분의 대형 컴퓨터 시스템

📌 운영체제의 역사

1940 ~ 1950년대

  1. 운영체제 존재하지 않음
  2. 원시기계로 기계적인 스위치에 의해 한 번에 한 비트씩 입력
  3. 기계언어 프로그램은 천공 카드 위에 입력
  4. 프로그램의 처리 속도를 빠르게 하기 위하여 어셈블리 언어 개발
  5. 1950년대부턴 한 번에 오직 하나의 작업만 수행
  6. 시스템을 최대한 활용하기 위해 작업 간 변환을 원활하게 하도록 설계됨
  7. 프로그램과 데이터가 일괄적으로 입력되므로 단일흐름 일괄처리(Single-Stream Batch Processing) 시스템이라 부름
  8. GM(General Motors) 연구소에서 회사의 IBM 701을 위하여 1950년대 초 최초의 운영체제 구현

1960년대

  1. 일괄처리 시스템이지만 몇 개의 작업을 동시 수행시킴
  2. 몇 개의 작업이 메모리에 동시에 있게 하는 멀티프로그래밍(Multiprogramming) 개념 개발: CPU를 사용 중인 한 작업이 입출력 작용을 완료하기 위해 대기하는 동안 다른 작업이 대기중인 CPU사용할 수 있게함
  3. 1964년 IBM System/360 계열 컴퓨터 시스템이 발표되어 OS/360이라는 운영체제 출시, 많은 운영체제의 모델이 되었고, 동시에 다중 대화식 사용자(Multiple interactive users)를 위한 더욱 발전된 운영체제 개발됨
  4. 시분할 시스템(timesharing system)은 동시적인 대화식 사용자의 멀티프로그래밍을 위하여 개발됨
  5. 1960년대 많은 시분할 시스템은 일괄처리는 물론 산업처리 제어 시스템과 같은 실시간(real-time) 응용을 지원하는 멀티모드(multimode)시스템이었음

✔︎ IBM

  1. 미국의 국제사무기기회사(International Business Machines Corporation)
  2. 천공 카드(punched card)를 사용하는 시스템을 고안하여 1896년 창업

1970년대

  1. 일괄처리, 시분할 처리 및 실시간 처리를 지원하는 멀티모드 시분할 시스템
  2. CPU의 속도는 급발전되었으나 입출력장치의 속도가 느려 작업 처리상 많은 문제 발생 -> 하나의 CPU를 여러 개의 프로그램이 공유하여 사용하는 멀티프로그래밍 기술이 상당히 발전된 시기
  3. 미국 전역을 통한 컴퓨터 시스템의 통신 증가
  4. 근거리 지역 네트워크(Local Area Network, LAN)에서의 통신은 이더넷(Ethernet) 표준에 의해서 실용화되고 경제적으로 됨
  5. 외부 공격에 취약한 통신선을 통해 이동되는 정보 보호위하여 보안문제 증대, 암호화가 많은 주목을 받음

✔︎ 근거리 지역 네트워크(Local Area Network, LAN)

  1. 좁은/한정된 지역(학교, 건물, 연구실 등)을 한데 묶는 컴퓨터 네트워크
  2. 구축한 사용자가 직접 관리, 운영
  3. 서로 다른 벤더의 기기에도 사용 가능

✔︎ 이더넷(Ethernet)

  1. 컴퓨터 네트워크 기술의 하나
  2. 1980년대 상업적으로 소개 되어 1983년에 표준화됨(IEEE802.3)

1980년대

  1. 컴퓨터의 구성요소의 가격 대비 성능 크게 향상
  2. 하드웨어: 부분적인 기능을 쉽게 교체할 수 있는 카드를 이용, 융통성 향상
  3. 컴퓨터 가격 하락
  4. 운영체제 기능이 하드웨어에 자체 포함된 새로운 개념인 펌웨어(Firmware) 등장
  5. 2개 이상의 프로세서를 이용하는 멀티프로세서(Multiprocessor) 환경으로 변화
  6. 하나의 작업을 대상으로 여러 개의 프로세서가 상호 결합하여 서비스할 수 있도록 프로그래밍 언어도 복잡한 형태로 바뀜
  7. 개인용 컴퓨터(Personal Computer)와 워크스테이션(Work Station)의 시대
  8. 마이크로프로세서 기술의 발전으로 1970년대의 메인 프레임(Mainframe)처럼 강력한 데스크톱 컴퓨터(Desktop Computer)의 구축 가능
  9. 개인 소유 컴퓨터를 가질 수 있게되어 시스템과 시스템 사이의 데이터 전송을 위하여 통신시설을 사용할 수 있게 됨
  10. 컴퓨터 네트워크가 중요하게 대두됨
  11. 전자우편, 데이터 검색, 컴퓨터끼리의 정보교환, 파일전송, 원격 데이터베이스 엑세스 등의 기능이 확산
  12. 네트워크상에서 다양한 서비스를 필요로 하는 클라이언트(Client)와 하드웨어/소프트웨어 구성원으로 서비스를 수행하는 서버(Server)로 구성되는 클라이언트/서버(client/server) 모델 확산

✔︎ 펌웨어(Firmware)

  1. 하드웨어 장치에 포함된 소프트웨어
  2. 하드웨어의 제어와 구동을 담당하는 일종의 운영체제
  3. low-level 언어로 작성된다

✔︎ 워크스테이션(Workstation)

  1. 고성능 개인용 PC

✔︎ 메인프레임(Mainframe)

  1. 대형컴퓨터

1990년대

  1. 프로세서와 주기억장치의 급속한 발달과 가격 하락, 네트워크의 발달로 병렬 처리(parallel computing)와 분산 처리(discributed computing)가 꽃 피운 시기
  2. CPU의 사용 비용 낮아짐
  3. 멀티미디어 처리 기술 발달 시기
  4. 인터넷(Internet)의 보급이 급속도로 확산됨
  5. 다양한 멀티미디어 정보를 컴퓨터 시스템 기반 호나경에서 효과적으로 처리할 수 있게 된 시기
  6. 이 시기 운영체제는 명령어 기반에서 벗어나 그래픽 사용자 인터페이스(Graphic User Interface: GUI)를 강화하는 쪽으로 발전
  7. 선점형(preemptive) 멀티태스킹(multitasking)과 멀티쓰레딩(multithreading), 가상 메모리와 메모리 보호 등이 보편화됨
  8. 개인용 컴퓨터 운영체제로 Windows 3.1.m 95, 98, OS/2, Mac OS 등이 사용됨
  9. 서버 시스템용으로는 Windoes NT, UNIX, Solaris, Linux 등이 사용됨
  10. 범용 컴퓨터용으로는 IBM의 OS/390가 사용됨

2000년대와 이후

  1. 모바일과 임베디드 운영체제의 시대 도래
  2. 컴퓨터 시스템은 고속화, 고기능화, 경량화의 방향으로 발전 중
  3. 멀티코어 시스템 보편화
  4. 다양한 통신망 확대
  5. 개방형 시스템 발달
  6. 각종 통신망의 고속화와 확대댐에 따라 네트워크 기반의 분산 및 병렬 운영체제가 보편화
  7. 클라우드(Cloud) 환경의 운영체제가 새로이 등장
  8. 64비트의 CPU 보편화로 인해 64비트용 운영체제도 확대 중
  9. PDP, PMP를 거쳐 스마트폰, 태블릿 등의 모바일 장치 대중화
  10. ICT와 융합된 가전제품 등장

📌 알아두면 어디가서 욕 안 먹는 기본 내용

개발자인데도 불구하고 생각보다 이런 용어의 정확한 명칭과 의미를 모르시는 분들이 좀 계셔서(부사수와 얘기하다가 글로 남겨야 겠다고 다짐) 적습니다.

✔︎ PC

  1. PC개인용 컴퓨터(Personal Computer)라는 의미도 있지만, 프로그램 카운터(Program Counter)라고도 불린다. 개인용 PC라는 말은 중복 된 표기법이다(개인용PC: 개인용 개인용 컴퓨터)
  2. 특히 운영체제에서의 PC는 주로 프로그램 카운터를 의미한다.

✔︎ Program Counter

  1. 마이크로프로세서 내부에 있는 레지스터 중 하나
  2. 실행 될 명령어의 주소를 담아두는 곳
  3. IP(Instruction Pointer, IP주소의 그 IP(Internet Protocol)과 다르다)라고도 불린다.

✔︎ Network

  1. 분산되어 있는 컴퓨터와 컴퓨터를 거미줄(그물망)처럼 연결한다고 해서 붙여진 이름이다.
  2. Network 단어 자체가 '망' 이라는 의미다. 네트워크망은 중복 된 표기법이다(네트워크망: 망망)

✔︎ 저급언어: Low-level Language

  1. 프로그래밍 언어는 크게 저급언어고급언어로 나뉘는데, 기계를 직접 다루는 언어를 저급언어, 기계를 직접 다루지 않는 언어를 고급언어(High-level)로 부른다.
  2. 기계어(0,1), 어셈블리어(Assembly Language)등이 속한다.
  3. 저급언어 특징을 갖는 고급언어도 있다.(예: C)

✔︎ 32bit, 64bit 컴퓨터란?

  1. 32나 64는 CPU의 처리 사이클당 한 번에 처리할 수 있는 비트 수
  2. 32와 64의 의미는 2의 제곱을 의미한다. 2의 32제곱. <sup />태그가 안먹힌다. 여기서 2는 기계어(2진수: 0, 1)를 의미한다.
profile
Full Stack JS Developer

0개의 댓글