일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- UDF
- subdag
- Counterfactual Explanations
- requests
- XAI
- session 유지
- hadoop
- API
- login crawling
- GenericGBQException
- 상관관계
- TensorFlow
- integrated gradient
- gather_nd
- grad-cam
- GCP
- 공분산
- 유튜브 API
- BigQuery
- Retry
- correlation
- chatGPT
- flask
- top_k
- youtube data
- airflow subdag
- API Gateway
- tensorflow text
- spark udf
- Airflow
- Today
- Total
데이터과학 삼학년
운영체제 개요 및 역사 본문
운영체제 오리엔테이션
- 운영체제는 난이도가 높은 과목
- 컴퓨팅 사고가 고도로 발달한 분들이 모여서 만든 것
- 학습전략 : 문과 -> 외워라, 모두 -> 핵심이론, 용어에 집중, 감을 잡는데 중점/ 80%만 이해해도 성공
- 처음 배우는 분들도 따라올 수 있도록 구성
- 용어는 처음 배우시는 분들을 위해 가볍게 짚고 넘어감
- 반복하며 조금씩 깊게 설명
- 운영체제는 컴퓨터 사이언스 전공 필수 과목
- 소프트웨어 + 하드웨어
- 자료구조, 알고리즘의 필요성을 깨달을 수 있음
운영체제 큰그림
- Operating System : OS
- 운영체제의 역할1 : 시스템 자원(System Resource) = 컴퓨터 하드웨어를 관리한다!
> CPU(중앙처리장치), Memory(DRAM,RAM)
> I/O Devices
> 저장매체
- 컴퓨터 하드웨어는 스스로 할 수 있는 것이 없음
> 각 프로그램이 얼마나 CPU를 사용할지 결정 X
> 각 프로그램이 어느 주소에 저장되어야하는지 어느 정도의 메모리 공간을 확보해줘야하는지 결정 X
> 각 프로그램이 어디에 어떤 파일명으로 저장할지 결정 X
>> OS 없이는 컴퓨터는 동작하지 않음
- 대표적인 운영체제
> Window, Mac, Unix(현대 운영체제의 기술을 최초로 구현한 OS)
> UNIX 계열 OS : LINUX --> 프로그래머, 전공자라면 반드시 알아야 함(서버환경)
- 쉬어가기 : OS 만들기가 쉽지 않음(Tmax의 사례...)
- 운영체제의 역할2 : 사용자와 컴퓨터간의 커뮤니케이션 지원
- 운영체제의 역할3 : 컴퓨터 하드웨어와 프로그램을 제어
운영체제 큰 그림과 응용 프로그램
- 응용 프로그램(Application)이란
> 프로그램=소프트웨어
> 소프트웨어 = 운영체제, 응용프로그램(엑셀, 파포 등)
> Application(일반pc의 프로그램) = App(스마트폰에서 응용 프로그램)
- 운영체제는 응용 프로그램을 관리
> 응용 프로그램 실행 및 프로그램간 권한을 관리
> 응용 프로그램을 사용하는 사용자도 관리
- 운영체제와 응용 프로그램간의 관계
> 응용 프로그램은 누구나 만들 수 있음
: 응용 프로그램에 무한 반복문을 넣었을 때?
: 응용 프로그램이 잘 못 작성되서 프로그램이 다운
: 모든 파일 삭제 막기(권한/사용자 관리)
>> 응용 프로그램이 비정상적으로 동작될 때 이를 막고 관리하는 것이 운영체제의 역할
- 운영체제의 목표 : 사용자가 사용하는 응용 프로그램이 효율적으로 적절하게 동작하도록 지원
- 운영체제는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고 지원하는 소프트 웨어
- 쉬어가기 : 운영체제는 어디에 있을까?? --> 저장매체(SSD/HDD)에 설치(저장)됨
- 컴퓨터 구조 : 컴퓨터를 키면? --> 운영체제는 Memory에 올라가게 됨
- 참고 : 폰노이만 구조
- 정리
> 운영체제의 역할 : 시스템 자원, 응용 프로그램 관리, 효율적 분배
> 응용 프로그램 : 소프트 웨어
운영체제 역사(1950~1960년대 초반)
- 1950년대
> ENIAC(애니악) : 첫 번째 컴퓨터 --> 운영체제가 없었음
: 하나의 응용 프로그램을 실행시키기도 바빴음
: 시스템 자원은 응용 프로그램이 직접 제어했음
- 직접 진공관을 빼고 낌
- 1960년대 초기
> 프로그램 종류도 많아지고, 사용자도 많아지기 시작
ex) 철수 12시간, 영희 1분 실행 소요될 때, 각 프로그램의 실행순서가 정해져있음. 만약 철수가 먼저 실행되면 영희는 12시간 후에나 1분짜리 프로그램을 실행할 수 있음, 자동적으로 실행 순서를 처리할 수 없기 때문에 영희는 철수것 다 완료될때까지 기다렸다가 직접 돌려야 함
> 배치 처리 시스템(batch processing system) 출현
: 여러 응용 프로그램을 등록시켜 놓으면 순차적으로 실행
- 1950년대 : 운영체제 존재하지 않아 응용 프로그램이 직접 SR 제어하며 실행
- 1960년대 초반 : 배치처리 시스템 출현, 운영체제 출현
운영체제 역사(1960년대 후반~시분할 시스템)
- 새로운 개념이 제안됨(시분할 시스템(Time Sharing System), 멀티태스킹(Multi Tasking) but 운영체제로 구현되지는 않음
- 시분할 시스템과 멀티 태스킹
> 응용 프로그램이 CPU를 사용하는 시간을 잘게 쪼개서, 여러 개의 응용프로그램을 동시에 실행하는 기법
- 시분할 시스템 : 다중 사용자를 지원하고 컴퓨터 응답시간을 최소화하는 시스템
- 컴퓨터 응답시간
Keyboard ‘k’ 를 출력하라(app2) 누른후 응답까지의 시간이 너무 오래 걸림 > 배치 시스템
- 시분할 시스템은 컴퓨터 응답시간을 줄일 수 있음 : 다중 사용자 지원 가능
- 시분할 시스템 : 다중 사용자를 지원하기 위해 컴퓨터 응답시간을 최소화하는 방법
- 멀티 태스킹 : 가능한 CPU를 많이 활용하도록 하는 기능(시간대비 CPU 활용률을 높이자)
운영체제 역사(1960년대 후반~멀티태스킹)
- 멀티 태스킹 : 단일 CPU에서, 여러 응용 프로그램의 병렬 실행을 가능케 하는 시스템
- 보통은 시분할 시스템 = 멀티 태스킹
- 아주 짧은 단위로 여러프로그램을 잘게 쪼개서 실행을 시키면 사람이 느끼기에 동시에 실행되는 것처럼 느껴짐(ex. 플립북)
- 멀티 프로그래밍 : 최대한 CPU를 많이 활용하도록 하는 시스템, CPU 활용도를 높이자
- 운영체제의 스케쥴러와 관련이 있는 부분
- 배치 처리 시스템의 단점
> 컴퓨터 응답 시간(response time)이 오래 걸릴 수 있음
> 실행시간도 오래 걸릴 수 있음(CPU가 필요없음에도 응용프로그램이 CPU를 점유할 수 있기 때문)
- 시분할 시스템과 멀티태스킹
> 핵심 기술 : 시간을 잘게 쪼개서 여러 응용 프로그램을 실행
> 컴퓨터 응답시간을 줄일 수 있음(시분할 시스템, 다중 사용자를 지원)
> 전체 응용프로그램의 실행시간도 줄일 수 있음(멀티 프로그래밍)
> 결과적으로, 사용자가 느낄 때, 여러 응용 프로그램이 동시에 실행 되는 것처럼 보임(멀티 태스킹)
[정리]
- 1950년대
> 운영체제가 없었음
> 응용 프로그램이 직접 시스템 자원을 제어하며 실행
- 1960년대 초반
배치 처리 시스템 출현, 운영체제가 출현
- 1960년대 후반부 정리
> 시분할 시스템 / 멀티 태스킹 / 멀티 프로그래밍
> 기술: CPU 시간을 잘게 쪼개기
> 결과: 다중 사용자 지원, 응용 프로그램 동시 실행
운영체제 역사 (1970년대)
- 제대로 된 운영체제가 나옴
- UNIX OS
-
시분할 시스템, 멀티 태스킹, 다중 사용자 지원
-
데니스 리치 (C언어 개발) - UNIX도 C로 구현
-
현대 운영체제의 기본 기술을 모두 포함한 최초의 운영체제
- 쉬어가기: 운영체제 개발에 C언어가 필요했던 이유
-
1970년대 이전: Assembly 언어로 소프트웨어 개발
-
CPU 명령어, Memory 주소 직접 입력
-
컴퓨터가 변경됨에 따라 다시 개발해주어야 하는 단점
-
프로그래밍 복잡도가 높음
-
1970년대 C언어가 개발된 후:
-
C언어로 만드니 컴파일러가 프로그래밍 언어를 기계어로 바꿔줌
-
한번 작성한 코드를 다시 작성할 필요 X
-
프로그래밍 복잡도는 낮음 (어셈블리 언어에 비해)
운영체제 역사 (1980년대)
- 1980년대 - 개인용 컴퓨터의 시대!
-
1980년대 이전: 대형 컴퓨터를 여러 명이 접속해서 사용
-
1980년대~: Personal Computer (PC)
-
GUI 환경 제공 시작
- 용어 설명! CLI와 GUI
-
CLI (Command Line Interface): 터미널 환경
-
커맨드를 텍스트로 직접 입력하는 인터페이스
-
키보드, 검은 화면
-
GUI (Graphical User Interface): 구이… 환경
-
마우스로 입력하는 인터페이스
-
마우스
- 1980년대에 CLI에서 GUI 환경이 제공되기 시작함
MS vs. Apple OSs
https://www.youtube.com/watch?v=f_Q0XPher3o
운영체제 역사 (1990년대)
-
응용 프로그램 시대 by GUI 환경, 개인용 컴퓨터 보급 (사용자 증대)
-
엑셀, 워드 프로세서 등등
-
Windows OS 대중화
-
네트워크 기술 발전 - 월드와이드웹(WWW) 인터넷 대중화
-
오픈소스 운동 활성화 시작
-
UNIX OS 개발 + 응용 프로그램 자체 개발, 소스 오픈
-
이때 나온 것이 LINUX 운영체제, 소스 오픈, 무료!
운영체제 역사 (2000년대 이후)
-
오픈소스 활성화
-
LINUX 운영체제
-
Apache (아파치, 웹서버)
-
MySQL (데이터베이스)
-
안드로이드, 딥러닝, 데이터사이언스, IoT 관련 등등…
-
가상머신, 대용량 병렬처리
정리1
-
1950년대 - 운영체제 없음
-
1960년대 - 배치 처리 시스템
-
1970년대 - 시분할 시스템 / 멀티 태스킹 시스템 - UNIX OS (C언어)
-
1980년대 - GUI, 개인용 컴퓨터
-
1990년대 - 다양한 응용 프로그램, 인터넷 발달, 오픈소스 운동 활성화
-
2000년대 - 오픈소스 활성화, 가상 머신, 대용량 병렬 처리 등
정리2
-
운영체제는 응용 프로그램과 시스템 자원을 제어하고, 관리한다
-
응용 프로그램 용어 이해
-
배치 처리 시스템, 시분할 시스템, 멀티 태스킹 개념
-
CLI vs GUI 환경 용어 이해
-
History 전반은 가볍게만 알아두기
출처 : fastcampus https://online.fastcampus.co.kr/
'Computer Science > Operating System' 카테고리의 다른 글
운영체제 구조 - 시스템콜 , API, 사용자 모드/ 커널 모드 (0) | 2020.03.06 |
---|