Po_tta_tt0
콩심콩 팥심팥 🌱
Po_tta_tt0
전체 방문자
오늘
어제
  • 분류 전체보기 (266)
    • 🐛 회고 (14)
    • 💭 생각 (2)
    • 🤸‍♀️ 내 프로젝트 (16)
      • FISH-NEWS (8)
      • MBTI 과몰입 테스트 (2)
      • twitter clonecoding with TS (4)
      • pilzagenda (2)
    • 👨‍👩‍👧‍👦 팀 프로젝트 (2)
      • 피우다 프로젝트 (0)
      • SEMO(세상의 모든 모임) (1)
      • 마음을 전하는 텃밭 (1)
      • Stackticon (0)
    • 👨‍💻 CS지식 (11)
    • ✍ 공부 (94)
      • JavaScript (21)
      • TypeScript (39)
      • Html (0)
      • CSS (2)
      • React (18)
      • NextJS (7)
      • Vue (1)
      • Python (1)
      • Django (0)
      • 개발환경 & 그 외 (2)
    • 🏄‍♀️ 코딩테스트 (99)
      • 🐍 Python (99)
    • 🐙 Git & GitHub (3)
    • 📑 오류기록 (8)
    • 📚 우리를 위한 기록 (9)
    • 수업 (3)
    • 강의 등 (2)
    • 👩‍🎓 SSAFY (0)
    • 👋 우테코 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 문자열
  • 백준 숨바꼭질
  • 시뮬레이션
  • react-router-dom
  • 플로이드 워셜
  • 자바스크립트
  • 구현
  • dfs
  • Next.js
  • DP
  • 파이썬 감시 피하기
  • 백준
  • 이분탐색
  • 파이썬
  • BFS + DP
  • React
  • bfs
  • 파이썬 다익스트라
  • 백준 파이썬
  • js

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Po_tta_tt0

콩심콩 팥심팥 🌱

👨‍💻 CS지식

[ SNU 강의 ] 운영체제의 기초 | 쉽게 배우는 운영체제 1주차

2022. 7. 2. 20:46
반응형

 

0. 운영체제를 공부해야 하는 이유?

  • CS의 여러 과목의 최고봉이다!
  • 스마트폰, 자동차, 가전제품에서도 활용됨
  • 다른 소프트웨어를 배우는 데에도 적용할 수 있음

📌 이 강좌에서 배울 것

  • OS가 제공하는 것들
  • 기능과 내부구조
  • CS적인 이론이나 방법
  • 결과적으로 OS의 내부 구성을 잘 알수 있다

 

✍ OS의 진화과정

  • 당시 컴퓨터 시스템을 운영하는 사람들의 목적은 비싼 하드웨어를 잘 활용하는 것
  • CPU의 utilization을 최대화하는 것
  • 인건비는 상대적으로 저렴해 인건비는 고려하지 않음
  • 사실 OS라는 것이 존재하지 않았음. 사람이 OS의 역할을 했음
  • 사람이 오르골 펀칭뚫듯 입력을 하면 컴퓨터가 처리하는 원리
  • 빛을 쏘인 다음에 그 패턴을 보고 값을 읽어드림

 

Operator의 역할

  1. 사용자로부터 카드 덱을 수령
  2. 카드 덱을 컴퓨터 시스템에 로딩하고 수행
  3. 수행 결과를 프린터로 출력
  4. 출력한 결과물을 사용자에게 전달
    => 이걸 다 사람이 했음
  • 사람이 해서 너무 비효율, 이를 극복하기 위해 batch monitor이라는 것을 만들었다.
  • 여러 개의 카드 덱을 하나의 테이프에 기록하고 컴퓨터 시스템은 이 테이프 안의 잡을 순차적으로 수행하며 operator의 느린 job-to-job 속도 문제 해결
  • 좀 더 높일 수 있는 방안은 없을까? => IO체널
  • cpu는 커멘드만 IO체널에 전달해주고 자기 할일을 하면 됨. 인터럽트 등장 async하게 진행

 

Batch Monitor의 한계

  • 비동기적 I/O의 경우에는 CPU utilization을 높일 수 있지만, 동기적일 때는 여전히 CPU가 다른 작업을 수행할 수 없기 때문에
    효율성이 떨어짐

 

멀티 프로그래밍

  • 컴퓨터 시스템이 한번에 하나 이상의 active job을 가지고 있다 => 수행은 시작, 종료는 안한 job
  • degree of multiprogramming : 현재 진행되는 멀티프로그래밍의 개수

Multiprogrammed Batch Monitor의 등장 배경과 새롭게 대두된 문제들
등장 배경 : 동기적 I/O로 인한 CPU utilization 저하 문제를 해결하기 위해 Multiprogramming을 지원할 필요가 생김
문제점 : Memory Projtection Memory Relocation, Concurrent Programming

각 용어마다 정의된 내용을 잘 이해할 필요가 있다고 함

 

멀티프로그래밍을 하기 때문에 문제가 발생했다


문제 1 | Memory Protection
어떤 Job의 주소 사용 버그로 인해 다른 Job이나 OS의 영역을 침범함으로써 문제를 일으키는 현상
=> target memeory가 부여받은 고정 공간에 있는가를 잘 확인해야 한다
=> Job이 사용하는 메인 메모리의 시작 주소(Base Register에 저장)와 Job이 사용하는 메모리의 크기(Bound Register에 저장)을 사용해 접근하려는 주소의 Base Register과 Base Register + Bound Register 사이에 있는지를 확인


문제 2 | Relocation
코드를 짤 때 이를테면 1000번지에서 시작한다고 생각하고 짤 수 있었다.
하지만 멀티 프로그래밍을 진행하면서 특권을 가진 하나 빼고 어디서 시작하는지 알 수 없게 되었다.
=> 따라서 Job이 메인 메모리의 어느 위치에 로드될 지를 알 수 없기 때문에 임의의 주소에서도 문제없이 수행될 수 있어야 한다
따라서 사람들이 하드웨어 메커니즘을 개발함


Base register
프로그램이 로드된 시작 주소를 담고 있다.
또 모든 프로그램이 0번지부터 시작된다고 가정한다
실제 주소가 만들어질 때는 base register에있는 주소와 합쳐져서 생성된다

 

논리 주소(Logical Address) : 프로그램에 의해 CPU가 바로 생성하는 주소
물리 주소(Physical Address) : 일련의 변환을 거친 최종 메인 메모리 주소

 

문제 3 | Concurrent Programming

interactive time sharing
서버를 혼자 사용하는 것 같은 느낌
사람들이 자신의 파일을 혼자만 보는 줄 알고 사용
=> 파일 시스템을 만듦.

 
🤔 질문 1

이 논리 주소와 물리 주소 변환 과정을 하드웨어에서 할까 소프트웨어에서 할까?

이 MMU를 소프트웨어로 진행하면 두 가지 문제가 발생한다

성능 문제
한번 수행하려 하면 최소 한번, 많게눈 두 세번의 instruction이 수행해야하게 됨
MMU 주소 역시 또 translation 과정을 거쳐야 한다 => 재귀적인 반복문이 호출된다
따라서 하드웨어적으로 호출됨

🤔 질문 2

OS 관점에서 MMU가 도입되었다면 어떻게 해야 할까?
=> 새로운 값과 bound register을 set해야 한다

이 기능은 OS만 고유한 권한으로 수행할 수 있어야 한다
relotation이나 protection을 침범할 수 있기 때문에

 

반응형
저작자표시 (새창열림)

'👨‍💻 CS지식' 카테고리의 다른 글

[ SNU 강의 ] 운영체제의 기초 | 쉽게 배우는 운영체제 5주차  (0) 2022.07.11
📢 공지  (0) 2022.07.07
[ 네트워크 ] TCP/IP 네트워크 기초 상식  (0) 2022.07.07
[ SNU 강의 ] 운영체제의 기초 | 쉽게 배우는 운영체제 4주차  (0) 2022.07.05
[ 운영체제 ] 30분동안 안쉬고 설명하기 _ 기술노트 with 알렉  (0) 2022.07.03
    '👨‍💻 CS지식' 카테고리의 다른 글
    • 📢 공지
    • [ 네트워크 ] TCP/IP 네트워크 기초 상식
    • [ SNU 강의 ] 운영체제의 기초 | 쉽게 배우는 운영체제 4주차
    • [ 운영체제 ] 30분동안 안쉬고 설명하기 _ 기술노트 with 알렉
    Po_tta_tt0
    Po_tta_tt0
    감자의 코딩하는 블로그 콩심은데 콩나고 팥심은데 팥난다

    티스토리툴바