-
운영체제 서론 및 역사Computer Science 2024. 4. 10. 11:18반응형
개발자 안하니까 개발공부가 재밌고 하고싶은 신기한 마법
새로운 기술들이 우후죽순 쏟아지는 요즘, 기초를 단단하게 쌓고싶은 마음이 들었다.
경성대학교 양희재 교수님의 강의를 보며 운영체제 공부 시작!
http://kocw.net/home/search/kemView.do?kemId=978503
운영체제란?
1. PC를 구입하면 운영체제가 설치되어 있음
- Windows XP, Windows7, Linux , MS-DOS
- max OSX , iOSNHTX`XB,
→ 운영체제가 없는 컴퓨터는 야생마.
컴퓨터 구조
프로세서
메인 메모리
- ram : 휘발성 / 수백 메가 바이트
- rom : read only memory / 전원이 켜져도 유지됨 / 수십 키로 바이트
하드디스크 (보조기억장치) 가지고 있음 - 전원에 관계없이 유지됨
부트로더2. 컴퓨터는 "프로세스 - 메모리" 로 구성 = 메모리 내장 컴퓨터 (대부분 우리가 사용하는 모든 컴퓨터)
- 프로세스는 메모리의 명령을 하나씩 가져와서 실행한다.
→ 명령(instruction)들의 집합을 프로그램이라고 함.
→ 따라서 컴퓨터에서 프로그램을 실행하기 위해서는 메모리에 프로그램을 미리 내장해두고 실행한다.
3. 컴퓨터 하드디스크 안에 프로그램 실행을 위한 실행 파일이 들어있음
- 하드 디스크 내의 실행 파일을 메모리에 올려야 실행을 할 수 있을 것
→ 이 때 하드디스크에 있는 실행 파일을 메모리에 올려주는 것이 운영체제의 역할
→ 운영체제가 메모리에 내장되어있지 않으면 메모리에 임의의 명령값이 들어가있기 때문에 컴퓨터가 전혀 제어되지 않음
4. 컴퓨터 실행 시
1) 컴퓨터를 실행하면 프로세스가 rom 영역의 명령어들을 실행함
→ POST(Power On Self Test) 실행 - 전기를 켜면 컴퓨터에 환경설정이 모두 잘 되어있는지 모두 테스트
→ 부트로더가 실행 : 하드디스크 안에 설치되어있는 운영체제를 메인메모리(ram 영역)로 가져옴
→ rom은 더이상 실행되지 않음
2) 운영체제가 메인메모리로 올라오면 운영체제가 모든 것을 제어 → 바탕화면이 나타남
→ 운영체제를 메모리의 Resident라고 한다 (상주한다)
→ 프로세스는 하나인데 동시에 여러개의 실행파일을 실행시키는 역할도 운영체제 / 실행파일을 하드디스크에 저장하는 역할도 운영체제
따라서 운영체제의 구조는?
1. 운영체제는 하드웨어 장치를 원하는대로 제어하는 관리 프로그램
→ Control program for computer
→ 프로세스 관리, 메모리 관리, 입출력장치 관리, 파일시스템 관리, 네트워크 관리, 보안(security) 관리 등
(가장 중요한건 프로세스(cpu) 관리와 메모리 관리)
운영체제 (os)는 정부 (government)와 비슷하다
- 정부는 자원 관리자 / 자원 할당자로써 자원을 가지고 있지만 직접 일하지 않고 관리한다.
(업무별 부서인 행정부, 교육부, 국방부, 건설교통부가 직접 일함)
"주어진 자원을 어떻게 가장 잘 활용할까?"
- OS가 좋으면 성능이 좋아짐2. 운영체제는 kernal과 shell & command interpreter으로 구성
→ shell & command interpreter는 명령을 내릴 수 있도록 만들어주는 것
ex) $ls / $who / $ df
운영체제의 역사
1. 1940-1950 : 운영체제 없음
Card reader - Memory - Processing - Line printer
- 카드리더기에 프로그램을 넣어 메모리에 적재
- 이후 카드리더기에 컴파일러 넣어 프로그램을 기계어로 변경함
2. Batch processing (일괄처리)
- Operator가 일일히 손으로 했던 아래의 과정을 메모리에 넣자! → 최초 os = resident monitor
Card reader에 소스코드 카드를 넣어 메모리에 적재
이후 컴파일러 카드를 넣어 라이브러리와 링크하여 번역
메모리의 적절한 위치에 로딩도 필요- 프로세스, 메모리에 user program(컴파일러, 링크 등) 한 가지와 os가 있음
3. 다중 프로그램
- cpu 실행 - io 실행 등 순차적으로 진행되는데, io실행될 때까지는 cpu가 할 일이 없음
→ 빠른 cpu, 느린 io. 비싼 자원인 cpu가 idle 상태
- 메모리에 여러 개의 job을 올리자
→ user program를 한 개가 아닌 num1 , num2, num3로 여러개 올림
→ io를 만나면 cpu가 스위칭해서 계속 일을 할 수 있음
- 생각해야할게 많아짐 .
→ cpu의 성능을 향상 시켜야하는데 어떻게 성능을 향상 시킬 것인가? = cpu 스케쥴링
→ 어떻게 메모리 관리를 해야 다른 곳에 침범하지 않을 것인가? = 메모리 관리
4. 모니터, 키보드 interactive가 등장!
컴퓨터 한 대에 수많은 단말기를 붙임
→ 단말기 = terminal (모니터, 키보드)
5. 시공유 시스템 (time sharing system)
- cpu가 user1 , user2, user3 의 일들을 1/100 초마다 스위칭 해서 일을 함
= 1초마다 100번 일어남 . 3명일 경우 사람당 cpu 33번 할당
→ interactive system (대화형) 가능 = 프로세스 간에 통신이 가능해짐
→ 동기 (여러명 중 순서를 정하는 것) / 가상메모리 (하드디스크의 일부를 메인메모리인 것처럼 사용)
ex) unix
컴퓨터 규모별 분류
- super computer, server, workstation, pc, handheld, embedded
반응형