본문 바로가기
CS

chapter01.

by angrxxeon 2023. 1. 12.

컴퓨터 전원이 켜졌을때                                                                            컴퓨터의 구조

  • 컴퓨터의 구조
    • 하드웨어- 내눈에 보이는것, 운영체제의 관리 대상 ex.모니터, 메모리
    • 운영체제
    • 응용프로그램 - 포토샵, 한글과 같은 프로그램
    • 사용자
    s/w : 한글, word, v.s, player ...
    os : cpu 스케줄링, 메모리관리, 파일관리, 네트워크 관리, 입출력장치 관리,
    h/w : cpu,메모리, 모니터,키보드,마우스

운영체제란

컴퓨터 사용자와 컴퓨터 하드웨어 사이의 중개자 역할

  • 운영체제의 목표
    • 사용자가 사용하기 편리하게
    • 컴퓨터 하드웨어를 효율적으로 사용하여 성능을 향상시키는것
  • 운영체제가 하는일사용되는 인터페이스에 따라 달라진다.
    • Resource allocator/manager
    • 모든 자원을 관리하며 효율과 공정한 자원 사용을위한 결정한다.
    • control program운영체제는 kernel 부분과 shell부분으로 나뉠 수 있다.
    • 컴퓨터의 잘못된 사용이나 부적합한 사용을 방지한다.

컴퓨터 시스템 구성

하나 이상의 CPU와 장치 제어기들은 공유 메모리에 접근할 수 있도록 공통 버스로 연결

cpu와 장치는 병행 수행하기 때문에 메모리를 사용하기 위해 경쟁함

  • 컴퓨터가 시작될때
    • POST (power - on -Self Test)- 키보드는 잘 있는지, 메모리는 얼마나 용량이 있는지 등 체크하고 테스트하는것
    • Boot Loader - 운영체제가 저장되어있는 하드디스크의 주소를 가지고있어 운영체제를 읽어 RAM에다가 보냄운영체제 커널을 메모리에 적재시킨 후, 커널을 실행한다.
    • 시스템은 완전히 부트된 상태(컴퓨터가 켜진 상태)에서 대기(event 발생전까지)
    • 시스템의 모든 구성요소를 초기화한다.
  • 다중 프로그래밍
    • 시대별 변천사5년대 - 하드웨어와 운영체제의 발전70년대 time - sharing system(시분활)의 등장을 통해 여러사람이 하나의 시스템을 사용할때 CPU를 나눠서 사용할 수 있게 해 줌으로서 여러사람이 여러 프로그램을 실행해도 모두가 나만 서비스를 받는다라고 느끼게 해준다.
    • 60년대 - 멀티 프로그래밍과 메인메모리를 통한 여러 프로그램 로딩 가능
    • 40년대 - NO os
    • CPU가 항상 하나의 작업을 수행할 수 있도록 함
    • 여러 작업(프로그래밍)을 메모리에 적재하여 운영체제는 실행할 작업을 선택
    • 입력값을 받아드리거나 출력할때 cpu가 쉼 → cpu를 사용할때 입력출력관련 디바이스는 놀고있음 → 자원의 효율적 사용 - 여러개의 프로그램을 로드할 수 있는 메인 메모리를 가져옴
    • cpu가 쉬지않고 일할 수 있도록 한다.

시분활(time - sharing system)

배경

모니터와 키보드의 등장으로 사용자와의 인터렉티브한 환경 구축(대화식 컴퓨팅)CPU scheduling → 누구를 작업할 것인지 준비 → 스와핑 기술이 필요→가상 메모리 필요

가상메모리는 CPU에서 실행이 되기 위해서는 메인메모리에 로드가 되어야하는데 여러개의 유저가 여러개의 프로그램을 실행시킬려면 메모리가 부족한 경우가 발생 → 하드디스크에 가상메모리를 만들어서 하드디스크의 일부분을 메모리인것처럼 느끼도록 보여줌 → 메모리가 다른 공간에 있지만 그렇게 느끼지않도록 스와핑기술이 필요한것이다.

응답시간은 1초 미만이어야하며 각 사용자는 메모리에 실행 중인 프로그램을 적어도 하나는 가지고있다.

cpu가 빈번하게 다른 작업으로 전환하도록 논리적으로 확장한것

인터럽트

하드웨어와 운영체제가 발전됨에 따라 운영체제가 해야할 일들이 많아졌는데 운영체제가 중개자의 역할을 잘 하기 위해서 응용프로그램과 하드웨어간의 상황를 잘 알고있어야한다.

→ 운영체제에게 각 상태과 상황을 알려주는 도구, 방법 : 인터럽트

  • 인터럽트 by 하드웨어
    • cpu 외부의 디스크 컨트롤러(ex. 드라이버)나 주변장치(input or output 장치)로 부터 요구되는 것
    • 운영체제의 처리를 요하는 상황을 알리기 위해 전기적인 신호를 사용
      1. 기계검사 인터럽트 - 프로그램을 실행하는 도중에 갑자기 정전이나 컴퓨터 자체 내에서 기계적인 문제가 발생한 경우 - 전원이 꺼진다거나 블루스크린이 뜨는경우
      2. 외부 인터럽트 - 오퍼레이터나 타이머에 의해 의도적으로 프로그램이 중단된 경우
      3. 타이머 - time sharing system에서 하나의 프로세스당 자신에게 할당된 시간이 끝나면 쫒겨남 이때 정해진 시간을 타이머가 알려준다.
      4. 입출력 인터럽트 - 입출력의 종료나 입출력의 오류에 의해 CPU의 기능이 요청되는 경우 ex. 프린트 출력
      5. 프로그램검사 인터럽트 - 프로그램 실행 중 보호된 기억공간 내에 접근하거나 불법적인 명령 수행과 같은 프로그램의 문제가 발생한 경우
      6. 다중프로그래밍 환경의 경우 각각의 프로세스에 각각의 영역의 메모리를 할당받음 → 다른 프로그램이 나만의 메모리 공간에 접근하면 문제가 생김
  • 인터럽트 by S/W
    • 프로그램 실행 중 프로그램 상의 처리 불가능한 오류나 이벤트를 알리기 위한 경우 발생
    • 트랩 또는 예외라고 부름 ex. 자바코드중 try/ exception을 생각!
      • 존재하지않은 메모리 주소에 접근
      • 가장 강력한 대응방법 → 프로그램 종료
    • 소프트웨어 만드는 사람자체가 완전하지않기때문에 실수가 발생할 수 있기때문에 항상 예외상황을 준비
  • 운영체제는 인터럽트가 발생했을때 어떤 동작?
    • 하드웨어가 문제있다고 알려주는 경우, 프로그램이 문제있다고 이벤트(인터럽트)를 날림 → 인터럽트가 들어오면 메뉴얼대로 행동함
    • 인터럽트는 인터럽트 서비스 루틴에게 제어권을 넘기게 된다. 종류별로 서비스 루틴이 다르며 모든 서비스 루틴의 주소를 저장하고 있는 자류구조를 인터럽트 벡터라고 한다.
    • 인터럽트 서비스 루틴 = 메뉴얼 / 인터럽트 벡터 = 목차
    • 인터럽트가 들어오면 하던일을 그대로 두고 다시 갔다가 돌아와야함 단, CPU가 여러개일때
    • CPU가 1개일때, 인터럽트 아키텍처는 반드시 인터럽트 된 명령어의 주소를 저장해야함
      • 복귀주소, 복귀전의 cpu 상태 복원
    • 운영체제는 인터럽트가 발생해야 작동을 시작하는 방식
      • 이벤트는 운영체제를 동작시키기 위한 방아쇠역할을 함
  • 인터럽트 처리 시간 흐름
    • 입출력 인터럽트에 의한 cpu와 I/O의 설명(p.16)

운영체제의 작동

현대 운영체제는 interrupt driven 방식

interrupt driven : 운영체제가 대기모드에 있다가 마우스를 움직여 클릭을 하는것과같은 인터럽트가 발생, 프로그램을 실행하면 하드디스크에 있던 프로그램이 메모리에 로드되고 운영체제에 의해 실행되는 것

  • 소프트웨어 인터럽트운영체제 서비스 요청 - 프로그램이 하드웨어를 사용할 수 있도록 중개자역할인 운영체제에게 요청하는 것
  • 소프트웨어 오류 - ex. 무한 루프, 다른 프로세스 혹은 운영체제를 수정하려는 행위
  • 이중모드운영체제가 자기자신을 다른 시스템 구성요소로부터 보호하기 위한 장치시스템이 사용자 코드 혹은 커널 코드를 실행하고 있는지 구분하는것이며 일부 작업(명령어)들은 반드시 커널의 권한에 의해서만 실행될 수 있도록 한다.유저프로그램이 실행하고있다가 어떤 하드웨어를 사용하고싶을때, 프로그램권한으로 사용할 수 없는 부분이 나올때 요청 → 모드 비트를 바꿈
  • 자신의 핵심 기술을 보호하기 위해서 / 운영체제가 침범받지않게 권한이 있는 상황에서 사용할 수 있도록 진행하는것이다.
  • shell는 인터페이스로 실질적인 사용자가 운영체제를 사용할 수 있도록 편의를 제공하는 영역이다.
  • 커널의 핵심은 운영체제의 주요 업무 → 이런 업무들이 일반 사용자나 프로그램에 의해 공격받게될때 이들을 보호하기위해 모드 체인지를 하게됨(유저모드인지 사용자모드인지)
  • 보호 - 소프트웨어 인터럽트가 걸리면 운영체제는 자기 메모리 영역과 문제 프로그램 이외의 다른 프로그램들을 보호하기 위해 작동을함→ 이것들을 방지하기위해 마련해놓은 장치가 듀얼모드(이중모드) ex. 파일 삭제할때 권한요청
  • 무한루프, 프로세스 자원 독점을 방지하기 위한 타이머
    • 일정 주기마다 컴퓨터에 인터럽트를 발생시키도록 타이머 세팅
    • 특권 명령을 통해서 타이머 시간을 어떻게 할것인지 운영체제가 세팅 - 운영체제를 만드는 회사에서 세팅
    • 카운터가 0이 되면 인터럽트 발생
      • 제어권 : 사용자 프로그램 → 운영체제

저장구조

  • registers - CPU내부에 존재하는 저장장치로서 서비스 전체적인 환경변수나 임시적인 값 저장, 작은 저장공간
  • 메인메모리(RAM) - CPU가 직접 접근할 수 있는 유일한 대용량 저장 매체 , 휘발성- 내용삭제
    • 캐시메모리- 자주사용하는 명령어를 미리 캐시메모리에 저장하여 빠르게 CPU의 속도를 메모리가 맞출 수 있도록 하는 것, 더 빠른 저장장치로 정보를 복사
  • 보조 저장 장치- 비휘발성 저장 용량 - 메인 메모리의 확장으로도 사용 가능
  • 반도체 디스크(SSD) - 고속 입출력 비휘발성 저장매체로 고용량
  • 저장장치 시스템은 계층 구조를 형성함 - 위로 올라갈수록 cpu에 가까움 ,속도가 빠름 ,휘발성, 비싸짐

프로세스 매니지먼트

  • 프로세스는 실행 중인 프로그램
    • 시스템 안에서의 작업의 단위
    • 프로그램 - 실행되지않고 명령어 덩어리들이 저장공간에 저장되어있는것 = 수동적인 개체 / 프로세스 - 저장되어있는 명령어들이 실행되는것 = 능동적인 개체
  • 프로세스는 자신의 업무를 수행하기 위해서는 자원이 필
    • CPU, 메모리, I/O,파일
    • 초기화를 위한 데이터
  • 프로세스는 명령어를 한 번에 하나씩 완료될 때까지 순차적으로 실행
  • 프로세스가 종료될 때에는 재사용이 가능한 모든 자원을 반환함
  • 운영체제의 프로세스 관리
    • CPU 사용을 위한 프로세스 또는 쓰레드 스케줄링(누가먼저 실행될 것인가)
    • 쓰레드 : 하나의 프로그램안에 독립적인 일들이 병렬적으로 처리되어지는 일들 - 프로세스보다 저 작은 개념
    • 사용자와 시스템 프로세스를 생성하고 제거
    • 프로세스 일시중지 및 다시 시작
    • 프로세스간 동기화 할 수 있는 기법 제공- 프로세스들이 서로 공유하고 있는 데이터들이 있을때, 순서에 의해서 데이터들이 변형되지않도록 하는 동기화 기법
    • 프로세스간 통신할 수 있는 기법 제공
    • 교착상태를 처리하기 위한 기법 제공 - 일차선에 양쪽에서 자동차가 오는 경우(이도저도 못하는 경우)해결방법 제공

메모리 관리

  • 메모리는 바이트의 대용량 배열, 각 바이트는 자신의 주소를 가짐
  • 프로그램 실행에 필요한 데이터 전체 또는 일부가 메모리에 있어야함
  • 운영체제의 메모리 관리 - 어떻게 메모리를 할당할 것인지
    • 프로세스에 의해 사용중인 메모리 영역 추적
    • 어느 프로세스와 데이터를 메모리로 적재하거나 내보낼지 결정하고 필요에따라 메모리를 할당하고 반환
  • 메모리 관리 기법은 하드웨어 설계에 좌우된다.

저장관리

  • 물리적은 특성은 추상화하여 논리적인 저장 단위인 파일을 정의
    • 파일은 파일 생성자에 의해 정의된 관련 정보의 집합체로 디렉토리 단위로 구성된다.
  • 운영체제는 파일과 디렉터리를 생성하고 삭제하며 신뢰할 수 있는(비휘발성) 저장장치에 파일을 백업한다.
  • 비휘발성 대용량 데이터는 디스트(하드디스크)에 저장한다.
  • 운영체제의 대용량 저장장치 관리
    • 조각들의 크기가 다 다르기 때문에 생성된 파일을 어디에 저장할지 결정, 빈공간 관리, 저장장소 할당
  • 3차 저장장치 - ex. usb, 외장하드
    • Mount - 연결 관리/ unmount - 안전하게 컴퓨터와 연결 해제 관리

보안과 보호

  • 보호
    • 메모리 주소 지정 하드웨어 - 메모리의 논리주소와 물리주소가 변형이 되어질때 자신이 할당받은 메모리 이외에는 접근할 수 없음→ cpu에게 알림
    • 운영체제가 자기 스스로를 보호하는것도 있지만 운영체제가 관리하는 하드웨어까지 보호
  • 보안
    • 내부 및 외부 공격에 대한 시스템 방어- ex, 방화벽, 바이러스 공격

컴퓨터 시스템의 구성

대부분의 시스템은 하나의 범용 cpu를 사용

  • 다중처리기 시스템(멀티코어 시스템, 병렬 시스템)의 사용과 중요성이 증가
    • 장점
      1. 증가된 처리량
      2. 규모의 경제 - 규모가 커지면 처리되는 양이 활성화
      3. 증가된 신뢰성 - 결함 허용, 다른사람이 다른사람의 역할을 해줄 수 있음두가지 형태
    • 두가지 형태
      1. 비대칭 다중처리 - 하나의 관리자가 있고 나머지가 분배, 각처리기가 특별한 임무를 수행
      2. 대칭 다중처리 - 다 똑같은 레벨에서 일처리, 각 처리기는 공통적인 임무를 수행한다.
  • 클러스터 시스템
    • 둘 이상의 독자적 시스템 또는 노드들을 연결 - 근거리의 컴퓨터를 연결 보통 SAN를 통하여 저장장치를 공유한다.
    • 여러개의 컴퓨터를 물리적으로 연결해서 한컴퓨터가 해야하는 일들을 여러개의 컴퓨터로 동시에 하게 하는 것 - 슈퍼컴퓨터를 만드는것

컴퓨팅 환경

  • 모바일 컴퓨팅 - 휴대폰이나 태블릿의 ios나 안드로이드
  • 분산 시스템
    • 원거리도 네트워크로 연결되어있음 ex. 근거리 통신망(LAN), 광역 네트워크(WAN),대도시 지역 네트워크(MAN), 개인 영역 네트워크(PAN)
    • 네트워크 운영체제는 네트워크로 연결된 시스템 간에 기능을 제공한다.
      • 하나의 시스템인것처럼 느낌을 받을 수 있다.
  • 클라이언트-서버 컴퓨팅 - 클라이언트가 생성한 요청에 서버
    • 클라이언트에게 서비스(데이터베이스)를 요청
  • Peer - to- Peer computing - 데이터를 줄땐 서버, 데이터를 받을 땐 클라이언트가 됨
    • 모든 노드는 peer, 각 peer는 클라이언트, 서버 또는 두개의 역할을 함
  • 가상화 - 실제 운영체제 기반 위에다가 가상으로 다른 운영체제를 띄워서 하나의 응용처럼 실행될 수 있게 하는 것
  • 애뮬레이션 - ex. 안드로이드 개발 환경
  • 클라우드 컴퓨팅 - 컴퓨팅, 스토리지, 앱까지도 네트워크를 통한 서비스로 제공 가능 ex. 구글 서비스
    • sofeware as a service -인터넷을 통해 사용할 수 있는 하나 이상의 응용 프로그램 ex. 워드 프로세스, 구글
    • platform as s Service - 응용프로그램이 인터넷을 통해 사용할 수 있도록 준비된 소프트웨어 스택ex. 딥러닝, 빅데이터진행→ 코랩

'CS' 카테고리의 다른 글

chapter05-2 세마포/교착상태  (0) 2023.05.05
chapter05. 프로세스 / 임계구역 /  (0) 2023.05.05
chapter04. Threads  (1) 2023.01.14
chapter03. 프로세스 개념 및 스케줄러  (0) 2023.01.13
chapter02.운영체제 구조 및 서비스  (0) 2023.01.12