2-1주차. 컴퓨터시스템

나우히즈·2024년 7월 9일

OS

목록 보기
2/27

지난주 내용 보충

운영체제의 종류

리눅스 : 공개 소프트웨어. 소스코드가 공개되어 누구나 이용 가능하다.
-> 공개된 사항들을 수정하고, 버그를 잡는 등 활용이 가능하다.

반대로, 윈도우 맥같은 운영체제는 비공개. 사용자는 컴파일된 바이너리 파일을 구매

왜 리눅스 개발자들은 공짜로 코드를 공개했을까?
-> 소프트웨어라는 상품이 시장에서 특이한 성질을 가지기때문.

소프트웨어는 개발하는데 인건비가 든다. 개발된 다음 판매할때는 판매를 위한 비용이 발생하지 않음.
그냥 웹사이트에 올려놓고 팔면 됨.

그래서 손익분기점까지만 돈을 받고 그 이후론 가격을 낮춰서 시장을 장악하는 방법을 사용해옴.
특정제품이 시장을 장악하게되면, 2등 3등이 죽게됨.

어차피 망한거 그냥 공개해버림. 그게 리눅스.

근데 공짜라는건 의미가 달라짐. 많은 사람들이 그냥 사용하게되고, 시장에 점유율이 올라가게됨.
또 신기하게도 리눅스 개발자들은 망하지않고 교육시장, 컨설팅 등을 통해 네임밸류를 높이고 각광을 받게됨.

"공개 소프트웨어 정신" : 필요하면 누구나 사용하고, 수정을 자유롭게 해서 더 나아지도록 함께 관리하는 것.
망했지만, 공개하므로서 더욱 탄탄한 입지를 가지게 됨.

운영체제란 무엇인가.(저번 차시 내용 복습)

: 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층.

협의의 운영체제 -> 커널
: 운영체제의 핵심 부분으로 메모리에 상주하는 부분. 부팅 후 ~ 종료까지 메모리에 올라가있는 프로세스.

광의의 운영체제
: 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념

운영체제의 목적

1) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공.
2) 자원의 효율적 관리(CPU, Memory, disk, 그 외 소프트웨어 자원)
-> 주어진 자원으로 최대의 성능을 내도록 함.

컴퓨터의 두뇌, 통치자로서 역할을 함.
한정된 메모리 공간에 여러 프로그램들이 동시에 올라가는데, 프로그램마다 사용할 메모리를 적절히 분배해야함.
메모리를 마냥 1/n 해서 분배하는 것이 아니라, 특정 프로그램에 집중하게 하는 등 로직이 존재.

운영 체제의 분류

  • 동시 작업 가능 여부
  • 사용자의 수
  • 처리 방식

동시 작업 가능 여부

  • 단일 작업(single tasking)
    한 번에 하나의 작업만 처리
    ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행할 수 없음.

  • 다중 작업(Multi tasking)
    동시에 두 개 이상의 작업 처리
    ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음.

사용자의 수

  • 단일 사용자만 사용할 수 있는 운영체제(MS-DOS, MS Windows): Personal Computer 용도
  • 다중 사용자가 사용할 수 있는 운영체제(UNIX, Linux, NT server): 클라우드 서버용으로 주로 이용
    -> 한 대의 컴퓨터에 터미널 형태로 여러 유저가 접속해서 사용할 수 있는 경우를 의미.
    보안 등의 조금 더 복잡한 문제들을 운영체제가 처리해야함.

처리방식

  • 일괄 처리(Batch processing)
    작업 요청의 일정량을 모아서 한꺼번에 처리
    작업이 완전 종료될 때까지 기다려야함.
    이전 컴퓨터 세대에서는 키보드 마우스 등의 입력에 대해 바로 응답되지 않고 일정 작업량이 모여야 처리가 되는 상황이 있었음.
    ex) 초기 Punch Card 처리 시스템.
  • 시분할 (time sharing) - 범용적인 OS 처리방식
    여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    일괄 처리 시스템에 비해 짧은 응답 시간을 가짐 (ex. UNIX)
    주어진 자원을 시간을 쪼개여 효율적으로 사용하는 것.(성능을 보장해주는 방식은 아님)
    -> best effort. 최선을 다하나 결과의 완벽함은 보장 못한다.
    interactive한 방식
  • 실시간 (Realtime OS)
    정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS
    데드라인을 필수적으로 만족해야하는 경우.
    ex. 원자로 / 공장제어, 미사일 제어, 반도체 장비, 로보트 제어
    -> 실시간 시스템의 개념 확장.
    : Hard realtime system(경성 실시간 시스템)
    : Soft realtime system(연성 실시간 시스템)

몇 가지 용어

  • Multitasking
  • Multiprogramming
  • Time sharing
  • Multiprocess
    : 위 용어들은 컴퓨터에서 여러 작업을 동시에 실행하는 것을 뜻함.
    Multi-programming은 여러 프로그램이 메모리에 올라가 있음을 강조.
    Time sharingCPU의 시간을 분할하여 나누어 쓴다는 의미를 강조.

Multiprocessor : 하나의 컴퓨터에 CPU가 여러 개 붙어있음을 의미
여러 개의 CPU가 하나의 메모리를 공유하여 쓰다보면 충돌하는 문제가 발생하기도 함.
해당 수업에서는 CPU가 하나 있는 환경에 대해 생각해볼것.

운영체제의 예

  • 유닉스(UNIX)

    어셈블리로 프로그래밍하기 어려움 -> 코드의 대부분을 C로 작성 -> 사람의 이해가 쉽고 수정이 용이
    높은 이식성
    최소한의 커널 구조
    서버 용도 -> 복잡한 시스템에 맞게 확장 용이
    소스 코드 공개
    프로그램 개발에 용이
    다양한 버전. (System V, FreeBSD, SunOS, Solaris)
    Linux의 근본.
  • DOS(Disk Operating System)

    MS사에서 1981년 IBM-PC 위해 개발
    단일 사용자용 운영체제, 메모리 관리 능력의 한계.
  • MS Windows

    MS사의 다중 작업용 GUI 기반 운영 체제
    Plug and play, 네트워크 환경 강화
    DOS용 응용 프로그램과 호환성 제공
    불안정성
    풍부한 지원 소프트웨어.
  • Handheld device 를 위한 OS

    PalmOS, Pocket PC, Tiny OS
    Android, iOS

운영체제 과목의 수강 태도

: OS 개발자 관점에서 수강해야함.

  • 대부분의 알고리즘은 OS 프로그램 자체의 내용
  • 컴퓨터 하드웨어는 운영체제의 통제를 받으며 그 운영체제는 사람이 프로그래밍 하는 것
  • 내가 운영체제고 내가 어떻게 자원을 관리할지 생각해보면서 수업을 듣자.

0개의 댓글