[스터디]운영체제 #1
프로그램이란?
컴퓨터 하드웨어에게 일을 하도록 말하는 일종의 명령어 집합
운영체제란?
- 컴퓨터에서 항상 동작하는 프로그램
- 시스템서비스를 어플리케이션 프로그램에게 제공 (OS가 어플리케이션에게 말하길... : 나에게 다 말해!! 내가 해줄게!!)
- 프로세스 관리, 자원 관리, 유저 인터페이스 관리 등의 역할을 함
- 컴퓨터 시스템을 운영하는 소프트웨어
- 하드웨어를 제어하는 소프트웨어
커널이란?
- 하드웨어의 자원을 자원이 필요한 프로세스에 나눠주고, 덩달아 프로세스 제어(작업 관리), 메모리 제어, 프로그램이 운영 체제에 요구하는 시스템 콜 등을 수행하는 부분으로 운영 체제 맨 하부에서 돌아간다 (by 나무위키)
- 시스템 프로그램과 애플리케이션 프로그램의 인터페이스 제공 -> 즉, 커널이 핵심
부트스트랩이란?
컴퓨터가 파워온되면 CPU는 롬(메인 메모리에 포함되어 있으며 비휘발성 메모리)을 제일 처음 불러오게 된다. 롬에서 부트스트랩 로더라는 코드를 가장 먼저 실행시키게 되는데, 이 코드가 실행되면 OS가 실행된다. 파워온되면 운영체제 로딩, 하드디스크에 있는 운영체제프로그램을 메모리에 로딩하는(커널을!)
인터럽트란?
- A를 눌렀으면 A를 눌렀다는 걸 cpu가 알아야한다. 여기서 알려주는 것을 인터럽트라고 한다. cpu와 i/o디바이스가 통신하는 방법 중 하나가 인터럽트다.
- CPU에게 시그널을 보내기 위해 하드웨어는 언제든 인터럽트를 트리거한다.
폰 노이만 아키텍처
명령어집합(인터럭션 셋)을 메모리에 로딩 -> 메모리에 있는 명령어들을 cpu가 fetch -> execute
↑명령어 레지스터(IR)
저장공간
용량, 엑세스타임에 따라서 계층구조를 갖는다.
레지스터
캐시 - 비싸고 작다
메인메모리 - ex.램
하드디스크 - SSD(메모리형태의 하드디스크), HDD 하드디스크
optical disk
magnetic tapes(백업과 같은 것에 주로 사용)
멀티코어 : 메모리는 한 개, But cpu가 여러 개
멀티코어 디자인 : cpu하나 안에 코어(레지스터랑 캐시)만 여러개
멀티프로세서 : 멀티코어 디자인이 여러개인 것
멀티프로그래밍이란?
- 여러개의 프로그램을 동시에 메모리에 올려넣고 동시에 실행시키면 굳이 하나하나?!
- 하나의 프로그램이 한번에 동시에 한 개 이상이 돌고 있는것
- 여러개의 프로세스가 동시에 메모리에 올라가있는것
- cpu사용효율 ↑
- 멀티타스킹과 같은 말
타임쉐어링
- 여러 개의 프로그램을 여러번 계속 바꿔주기! (동시성과 병렬성의 개념이 여기서)
- cpu스케쥴링
- cpu효율을 높이는 방법을 선택
오퍼레이션 모드
- 유저모드
- 커널모드
사용자가 이상한 프로그램하지 않도록 막아주는 것도 운영체제의 몫이다. 따라서 커널모드에서만 직접적으로 하드웨어 제어 가능하며 유저모드에서 시스템콜을 할 시에만 커널모드로 넘어감(커널에서 시스템콜 처리).
가상화기술
- 운영체제를 여러개 쓰는 것
- 하드웨어와 os사이에 VMM(virtual machine manager)
- os스케쥴링을 하자
시스템콜이란?
- OS에 인터페이스하기 위한 방법
- OS의 서비스들을 시스템콜을 통해 연결 -> 즉, API
- OS API 가 시스템콜이라고 보면 됨 (read,write 등등)
- 대부분은 라이브러리들을 제공(여기서는 C)
- 운영 체제의 커널이 제공하는 서비스에 대해, 응용 프로그램의 요청에 따라 커널에 접근하기 위한 인터페이스(by 위키)
생각해봤던 질문
컴퓨터가 파워온되면 젤 먼저하는 일은?(운영체제와 관련해 설명)
-> 롬에 있는 부트스트랩 로더를 실행해 OS를 실행시킵니다
커널이란?
-> 메모리에 상주하는 운영체제의 핵심부분(즉,운영체제 중 항상 필요한 부분) / 메모리관리, 프로세스 관리, 자원 관리 등의 역할을 함
시스템콜이란?
-> 유저모드와 커널모드(이 두 개모드를 듀얼모드라고 함)의 인터페이스. 유저모드에서 관리할 수 없는 부분은 반드시 커널모드를 거쳐야하는데, 그러한 커널모드로 전환하기 위한 것
-> 유형에는 프로세스 컨트롤, 파일 매니지먼트, 디바이스 매니지먼트, 정보 관리, 보안, 커뮤니케이션이 존재
-> 서로 다른 시스템 콜 구분? 모르겠음
메모리구조?
-> 코드영역, 데이터 영역, 힙영역, 스택 영역이 존재
인터럽트란?
-> A를 눌렀으면 A를 눌렀다는 것을 CPU가 알아야하는데, 여기서 알려주는 것을 인터럽트라고 함. 즉, CPU와 통신하는 방법 중 하나가 인터럽트. CPU에게 시그널을 보내기 위해 하드웨어는 언제든 인터럽트를 트리거한다.
운영체제란?
-> 응용프로그램과 하드웨어 사이를 인터페이스, 즉 연결하는 시스템 소프트웨어
운영체제의 역할은?
-> 프로세스관리, 저장장치 관리, 네트워킹, 사용자 관리, 디바이스 드라이버 등
-> 컴퓨터 시스템의 계산 활동을 관리하여 컴퓨터 시스템이 제대로 작동하도록 한다. 프로그램 개발 및 실행을 위한 환경을 제공한다.
참고
[무료] 운영체제 공룡책 강의 - 인프런 | 강의
운영체제의 기본 원리를 튼튼히 이해해야만 고급 프로그래밍 기술을 이해할 수 있습니다. 본 강의는 운영체제의 바이블이라 할 수 있는 공룡책에 대한 전공자 수준의 강의입니다., - 강의 소개 |
www.inflearn.com