250x250
기리도
기리도의 개발새발 개발 일지
기리도
전체 방문자
오늘
어제
  • 분류 전체보기 (44)
    • Unity (6)
      • 모듈식 프로그래밍 (1)
    • C# (10)
    • 자료구조,알고리즘 (2)
    • 운영체제 (10)
      • 공룡책 (3)
      • 그림으로 쉽게 배우는 운영체제(인프런 강의) (7)
    • 리팩토링 (1)
    • 네트워크 (13)
      • 네트워크 장비 (13)
    • C, C++ 문법 (1)
      • 기타 (0)
      • C (1)
      • C++ (0)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래밍
  • 게임개발
  • 탄환
  • 인프런
  • 개발
  • 네트워킹
  • 네트워크 게임
  • 운영체제
  • 통신
  • C#
  • 유니티
  • 알고리즘
  • 스위치
  • Unity
  • 브릿지
  • OS
  • 네트워크
  • 길찾기
  • 공부
  • 개발공부

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
기리도
운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)

운영체제 들어가기

운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)

운영체제 들어가기

2022. 3. 21. 23:50
728x90

https://inf.run/bXfg

 

그림으로 쉽게 배우는 운영체제 - 인프런 | 강의

이 강의를 통해 모든 개발자들이 필수로 알아야하는 운영체제의 원리를 알 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

본 포스팅은 위 링크의 강의를 요약/정리한 것으로, 지식의 공유보다는 개인적으로 공부하고 복습하기 위해 기록한 것입니다.

 

개요

개인용 컴퓨터 - 윈도우즈, 맥
서버 - 유닉스, 리눅스
모바일 - 안드로이드 ios
내비게이션, 스마트워치, 세탁기 - 임베디드 운영체제
컴퓨터는 운영체제가 있어야 동작하는가? - 없어도 동작한다. 그러나 처음 설계한 그대로만 동작할 뿐 다른 기능을 추가할 수 없다.


운영체제가 하는 일

프로세스 관리, 메모리 관리, 하드웨어 관리, 파일 시스템


운영체제의 역사

1940년대
🔗1943년부터 미군 지휘 하에 펜실베니아 대학교에서 에니악 개발. 최초 목적은 미사일 탄도 계산. 종이에 먼저 작업해서 테스트한 후 종이를 보고 스위치와 배선 연결하는 방식. 기간은 몇 주씩 소요되며 인력도 많이 필요함

1950년대 초반
🔗진공관과 전선으로 만든 논리회로를 아주 작게 만든 직접회로 개발. 현대적인 컴퓨터의 모습
🔗CPU와 메모리는 있었으나 키보드와 모니터는 없음. 카드에 구멍을 뚫어 프로그래밍(펀치카드)하면 컴퓨터가 이를 읽어 계산

1950년대 중후반
🔗컴퓨터의 처리 속도는 빨라졌는데 오퍼레이터가 카드를 넣고 전달하는 과정은 여전히 느림(오퍼레이터의 오버헤드) -> 펀치카드 여러 개를 한 번에 컴퓨터에 전달하면 컴퓨터는 여러 개의 프로그램을 순서대로 실행하고 한 번에 결과를 확인(싱글스트림 배치시스템) -> 매 작업마다 일일이 오퍼레이터가 결과를 꺼내고 다시 다른 프로그램을 실행하는 비효율적인 과정이 없어짐 -> CPU 사용률 증가
🔗컴퓨터 시스템 개발자는 CPU의 사용성을 높이기 위해 고민 -> 입출력 중에 CPU를 못 사용하는 문제를 해결하기 위해 입출력을 담당하는 I/O 디바이스 컨트롤러를 만들어 입출력 중에도 CPU가 돌아가도록 만듬(I/O 디바이스 컨트롤러가 입출력 작업이 끝나면 CPU에 인터럽트 신호를 주고 인터럽트를 받은 CPU는 연산 처리) -> 그러나 여전히 입력을 기다리는 동안 CPU가 노는 문제는 남아 있음(싱글스트림 배치시스템의 한계)

1960년도
🔗메모리에 여러 프로그램을 올려놓고 시간을 나눠서 빠르게 번갈아가며 실행함으로써(시분할 시스템) 싱글스트림 배치시스템의 한계 극복 -> CPU 사용률 증가 -> 프로그램을 여러 개 실행할 수 있게 되면서 한 컴퓨터를 여러 사용자가 동시에 사용할 수 있게 됨 -> 여러 사용자가 여러 개의 터미널이라는 단말기를 이용해 컴퓨터에 접속해서 사용 -> 컴퓨터를 혼자 쓰는 듯한 효과로 인해 개인적인 문서나 개인정보를 저장하기 시작 -> 파일 시스템 등장.
🔗AT&T 벨 연구소에서 개발한 유닉스는 여러 프로그램을 동시에 실행하는 멀티 프로그래밍과 여러 사용자를 지원하는 다중 사용자 시스템, 파일 시스템을 구현한 운영체제였다.
🔗메모리에 여러 프로그램을 올려놓고 동시에 실행하면서 메모리 침범 문제와 프로그램의 시작 위치를 알 수 없게 되는 문제가 생김 -> 이를 해결하기 위해 하드웨어에 베이스 레지스터(베이스 주소를 저장하는 레지스터)를 추가해서 프로그램의 시작 주소를 저장하고 모든 프로그램은 0번지에서 실행한다고 가정
🔗CPU의 사용률과 효율성을 높이면서 생기는 문제를 해결하는 과정에서 점차 하나의 학문으로 자리잡음

1970년대 이후
🔗개인용 컴퓨터의 시대가 시작. 애플의 매킨도시와 마이크로소프트의 MS 도스가 많이 사용. 특히 매킨도시는 GUI를 도입해서 인기를 얻음.

요약
🔗CPU 사용률을 높이고 비용을 절감하려는 노력이 운영체제의 발전을 이끌었다


운영체제의 구조

커널
🔗운영체제의 핵심
🔗프로세스와 메모리, 저장장치를 관리하는 핵심적인 기능을 담당한다
🔗사용자는 인터페이스를 통해서만 운영체제의 커널에 접근할 수 있다
🔗사용자로부터 자신을 보호하기 위해 시스템 콜이라는 인터페이스를 갖고 있다
🔗어플리케이션은 시스템 콜을 통해 커널에 접근한다
🔗시스템 콜 없이 하드웨어에 직접 접근하면 사용자나 어플리케이션이 저장한 데이터를 다른 어플리케이션이 덮어 쓸 수 있으며 중요한 데이터를 덮어 쓸 수도 있다 -> 커널에서 제공하는 시스템 콜 중 하나인 write 함수를 사용하면 운영체제가 알아서 하드디스크의 빈공간에 데이터를 저장한다

인터페이스
🔗인터페이스는 GUI(그래픽 유저 인터페이스)와 CLI(커맨드 라인 인터페이스)로 나눌 수 있다
🔗GUI에서는 더블 클릭으로 디렉토리를 이동하며 CLI에서는 텍스트로 명령을 입력해서 이동한다

드라이버
🔗하드웨어와 커널 간에 사용하는 인터페이스
🔗운영체제는 수많은 하드웨어를 지원해야 하기 때문에 커널이 각각의 하드웨어에 맞는 프로그램을 전부 갖고 있기는 힘들다. 따라서 하드웨어를 제작한 제조사에서 드라이버를 만들어 제공한다.
🔗키보드나 마우스 같은 간단한 장치는 커널에 포함돼 있어 컴퓨터에 꽂으면 바로 동작하지만 그래픽카드나 타블렛 같은 복잡한 장치는 디바이스 드라이버를 설치해서 사용해야 한다.


컴퓨터 하드웨어와 구조

폰 노이만 구조
🔗오늘날 대부분의 컴퓨터에서 쓰임

🔗프로그램 내장 방식

  • 예전에는 하드웨어로 프로그램을 만들었기 때문에 프로그램을 바꿀 때마다 매번 스위치와 배선을 다시 조정해야 했다. 이를 해결한 것이 프로그램 내장 방식이다
  • CPU와 메모리를 두고 이들 사이를 버스로 연결
  • 프로그램을 메모리에 내장. 배선을 바꾸는 대신 소프트웨어만 변경

컴퓨터 하드웨어

🔗메인보드

  • 다른 하드웨어를 연결하는 장치
  • 장치 간 데이터 전송은 메인보드의 버스가 담당

🔗CPU 구조

  • CPU(Central Processing Unit), 중앙처리장치
  • 산술논리 연산장치, 제어 장치, 레지스터로 나뉨
    1. 산술논리 연산장치: 데이터 연산을 담당
    2. 제어 장치: 모든 장치의 동작을 지시하고 제어
    3. 레지스터: 계산을 위한 데이터를 임시로 보관하는 장치

🔗메모리 종류

  • RAM(Random Access Memory)
    • 메인 메모리 
    • 랜덤으로 데이터를 읽어도 저장된 위치와 상관 없이 읽는 속도가 같다
    • 전력이 끊기면 데이터를 잃어버린다
  • ROM(Read Only Memory)
    • 전력이 끊겨도 데이터를 보관할 수 있지만 한 번 작성한 데이터는 수정할 수 없다
    • 부팅과 관련된 바이오스를 저장하는 데에 주로 쓰인다

 

부팅 과정

  1. ROM에 저장된 바이오스 실행
  2. 바이오스가 주요 하드웨어에 이상이 없는지 체크(이상이 있다면 부팅X)
  3. 하드디스크의 마스터부트 레코드에서 부트로더를 메로리로 가져와서 실행
    • 마스터부트 레코드: 하드디스크의 맨 앞에 기록되어 있는 시스템 기동용 영역
  4. 운영체제를 메모리로 불러옴
    • 설치된 운영체제가 여러 개라면 운영체제 선택 후 메모리에 불러옴
  5. 부팅 완료
    • 이후 실행되는 모든 응용프로그램은 메모리에 올라와서 운영체제가 관리한다

인터럽트

폴링

🔗절차

  1. CPU는 입출력 작업이 들어오면 입출력 관리자에게 입출력 명령을 내린다
  2. 입출력 명령이 완료될 때까지 CPU가 주기적으로 확인한다

🔗효율성이 떨어짐

인터럽트

🔗CPU가 하던 일을 중단하고 새로 들어온 요청을 처리하도록 한 기능

🔗절차

  1. CPU가 입출력 관리자에 입출력 명령을 내리고 하던 작업을 계속한다
  2. 입출력 관리자가 입출력을 완료하면 CPU에 신호를 준다
  3. CPU는 인터럽트 서비스 루틴을 실행해서 작업을 완료한다
    • 인터럽트 서비스 루틴: 특정 인터럽트가 들어오면 그 인터럽트를 처리하는 함수
  4. 이후 CPU는 요청이 들어오기 전 하던 작업으로 복귀한다

🔗비동기적으로 동작하기 때문에 성능에 이점이 있다

🔗하드웨어 인터럽트

  • 하드웨어 입출력 장치에 의해 일어나는 인터럽트

🔗소프트웨어 인터럽트

  • 사용자 프로그램에서 발생하는 인터럽트(유효하지 않은 메모리에 접근하는 경우나 0으로 나누는 명령어 등)

 

 

728x90

'운영체제 > 그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글

메모리 종류  (0) 2022.03.29
데드락  (0) 2022.03.29
프로세스 동기화  (0) 2022.03.28
CPU 스케줄링  (0) 2022.03.25
프로세스와 쓰레드  (0) 2022.03.24
  •  
  • 개요
  • 운영체제가 하는 일
  • 운영체제의 역사
  • 운영체제의 구조
  • 컴퓨터 하드웨어와 구조
  • 부팅 과정
  • 인터럽트
'운영체제/그림으로 쉽게 배우는 운영체제(인프런 강의)' 카테고리의 다른 글
  • 데드락
  • 프로세스 동기화
  • CPU 스케줄링
  • 프로세스와 쓰레드
기리도
기리도
공부한 내용을 정리해서 올리는 블로그입니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.