- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 동적할당
- 안드로이드
- 정렬
- 파이썬
- 구글 로그인
- 안드로이드 스튜디오
- 프로그래밍 입문
- Java
- 배열
- android studio
- 코딩테스트
- 연결리스트
- til
- 로그인
- C++
- 비주얼 베이직
- Firebase
- firebase google
- sql
- 자료구조
- C언어
- 컴퓨터공학과
- 알고리즘
- 백준
- 프로그래머스
- python
- oauth
- 자바
- 공유대학
코딩하는 해달이
[운영 체제] 2주차 본문
참고서적
운영 체제 - 황기태(생능출판사)
운영체제의 개념
운영체제 정의
- 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계역할을 하면서 프로그램을 실행을 관리하고 제어하는 시스템 소프트웨어
- 운영체제는 컴퓨터가 아니다
- 운영체제는 실체가 있는 소프트웨어 - 인터페이스
- 컴퓨터가 켜질 때 처음으로 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어
- 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어
운영체제의 정의에서 핵심 단어
운영체제는 컴퓨터의 모든 자원(resource) 관리
- 자원
- 하드웨어 자원 - CPU,캐시,메모리 등
- 소프트웨어 자원 - 응용프로그램
- 데이터 자원 - 파일, 데이터베이스
운영체제는 자원에 대한 독점(exclusive) 권한 소유
- 자원에 대한 모든 관리 권한은 운영체제에 있음
- 자원 할당, 자원 공유, 자원 엑세스, 자원 입출력 등
- 예) 파일 생성 - 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력 등
운영체제는 관리자 (supervisor)
- 실행중인 프로그램 관리, 메모리 관리
- 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 등 관리 등
운영체제는 소프트웨어(software)
- 커널(kernel)이라고 불리는 핵심코드와,
- 커널 : 내부에서 동작하는 운영체제의 핵심 부분
- UI를 비롯한 도구 프로그램들(tool/utility)
- 예) 탐색기(explorer), 작업 관리자(task manager), 제어판(control panel) 등
- 장치를 제어하는 디바이스 드라이버들로 구성
운영체제의 기능
- cpu/프로세스 관리
- 메모리 관리
- 파일 시스템 관리
- 디스크의 빈 영역 등 저장 장치 관리
- 장치 관리
- 네트워크 관리
- 보안 관리
- 기타관리
- 사용자 관리 - 사용자 계정 관리
- 통계 - CPU, 메모리, 네트워크의 사용시간, 사용자의 접속 시간 등
- 오류 발견 및 대응
- 부팅(booting)
운영체제와 응용 소프트웨어
운영체제 | 응용 소프트웨어 | |
목적 | 컴퓨터 하드웨어나 응용 소프트웨어 등 자원 관리 | 사용자들의 특정 작업을 보다 편리하게 처리할 목적으로 만들어진 소프트웨어 |
기능 | 프로세스, 메모리, 파일 시스템, 입출력 장치 등 자원 관리와 사용자 관리 | 소프트웨어를 만든 특정 목적만 수행 |
개발 언어 | C/C++, 어셈블리어 | C/C++,Java, Python, C#등 |
실행 | 부팅 시 메모리에 적재되어 상주하여 컴퓨터를 끌 때까지 실행 | 사용자가 명령을 통해 실행시키거나 종료시킴 |
자원에 대한 접근 권한 | 컴퓨터의 모든 자원에 대해 배타적 독점 사용 권한 | 컴퓨터 자원을 사용하고자 할 때 반드시 운영체제에게 요청 |
운영체제의 태동
1. 고정 프로그램 컴퓨터 - 1940대
고정 프로그램 방식
- 1940년대, 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대
- 운영체제에 대한 개념 없음
- 소프트웨어와 하드웨어 분리 개념 없음
- 모든 것이 하드웨어로 제작
- 프로그래밍
- 종이에, 프로그램을 구현하는 스위치와 전선 연결도 작성
- 배선판에 전선 연결, 프로그램을 기계에 고착화
- 하나의 명령을 구성하기 위해 여러 가닥의 전선 연결
- 프로그램 전체 구축에 수천 개의 전선 연결, 며칠 소요
- 새로운 프로그램을 작성할 때 큰 고통
- 사례
- 1941년 독일에서 만든 Z3 computer
- 1944년 영국에서 독일군의 암호를 해독하기 위해 만든 Colossus
- 1943~1945년 미국에서 만든 최초의 전자식 컴퓨터 ENIAC
2. 내장 프로그램 컴퓨터 - 1945년~
내장 프로그램 방식
- 1945년 폰노이만에 의해 제안
- 1951년 EDVAC 컴퓨터를 만들 때 적용
- 오늘날 컴퓨터의 구조가 됨
내장 프로그램 컴퓨터의 의미
- CPU와 메모리 분리
- 소프트웨어와 하드웨어 분리
- 실행할 프로그램을 메모리에 담고, CPU가 프로그램을 실행하는 방시기
- 고정 프로그래밍 방식에 비해 획기적인 변화
- 하드웨어의 변화 없이, 실행시키려는 프로그램만 메모리에 적재
- 프로그램은 입력 장치를 통해 메모리에 적재
- 펀치 카드에 구멍을 뚫어 프로그램 작성
- 카드 리더기로 프로그램을 메모리에 읽어 들임
3. 프로그램 로더의 발견 - 운영체제 개념 시작(1950년대)
프로그램 로딩 시대
- 운영체제 개념의 시작
IBM 701 메인 프레임
- 1954년 IBM에서 만든 첫 번째 내장 프로그래밍 컴퓨터
- IBM의 첫 번째 범용 컴퓨터
- 판매하지 않고 대여만
- 기계만 대여하고 어떤 소프트웨어도 제공하지 않았음
- IBM 701을 빌린 고객이 모든 것을 해야 했음
IBM 701 개발자의 일반적인 개발 형태
- 첫번째 카드
- 다음 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성
- 두번째 카드부터
- 목적하는 프로그램 작성
로더 프로그램 필요
- 개발자가 뒷 카드들을 메모리에 적재하는 프로그램을 첫번째 카드에 작성하는 반복되는 시간 낭비를 줄일 필요
- 이 코드를 로더라고 부름
- 로더는 모든 사용자에게 공통으로 필요
로더 프로그램 필요
- 오늘날 운영체제의 가장 기본적인 기능?
- 사용자의 명령을 받아 저장 장치에 담긴 프로그램을 메모리에 적재하는 기능
4. 원시 운영체제 GM OS 탄생 - 1955년
GM OS
- 1955년, IBM701의 고객 GM에 의해 개발
- 펀치 카드에 담긴 프로그램을 메모리에 적재하는 로더 프로그램 개발
- 핵심 개념
- 로더 프로그램을 사용자 프로그램에서 분리
- 사용자가 자신의 프로그램을 적재하는 셀프-로더 프로그램 작성의 번거로움을 해서
- 로더 프로그램을 모니터라고 불렀음
- 후세대, General Motors Operating System이라고 불렀음
GM OS는 원시적인 최초의 운영체제
- 사용자 프로그램에서 로더 프로그램을 분리하고,
- 로더 프로그램을 시스템에 한 개만 두고,
- 사용자 프로그램을 실행할 때 작동하여,
- 사용자 프로그램을 읽어 실행시켜준다는 점에서
5. 최초의 운영체제 GM-NAA I/O 탄생 - 1956~1957년
1955년 GM은 IBM 701의 처리 속도를 높인 IBM 704 주문
IBM 704 컴퓨터 활용에 3가지 문제점 발견과 해결 시도
- 개발자들은 여전히 대기 번호를 뽑고 자신의 차례를 기다린다는 점
- 많은 시간 비싼 컴퓨터를 놀리고 있다는 점
- 개발자가 프로그램을 실행시키기 위한 시스템 셋업하는 동안, 컴퓨터는 놀게 됨
- 입출력 루틴을 개발자 스스로 작성
- 카드 입력 장치나 테이프 장치를 제어하는 프로그램 코드
최초의 운영체제 GM-NAA I/O 개발
- 1956년 GM과 NAA(North American Aviation)의 공동 개발
- 고가의 IBM 704 컴퓨터를 보다 효율적으로 사용하기 위해
- IBM 701의 모니터 프로그램(GM OS)을 확장하여 구현
- 운영체제로서의 모습 갖춤
- 배치 방식(batch operating system)으로 작동
- 개발자들이 작성하여 쌓아놓은 작업들을 순서대로 하나씩 메모리에 적재, 한 번에 하나의 작업 실행
- GM-NAA I/O 프로그램을 메모리에 상주(오늘날 운영체제 방식)
- 입출력 장치들을 제어하는 루틴들을 라이브러리 형식으로 갖추고 프로그램 사이에 공유
- 카드 입력 장치의 입출력, 테이프 입출력, 프린터 출력 등
- 개발자는 입출력 코드를 작성할 필요 없음
- 배치 방식(batch operating system)으로 작동
운영체제의 발전
운영체제의 태동 시절
1세대 컴퓨터 시절 - 운영체제 암흑 시대
운영체제의 개념 없음
배치 운영체제
출현 배경
- 컴퓨터의 노는 시간을 줄여 컴퓨터의 활용률 향상
배치 운영체제 컴퓨터 시스템
- 개발자와 관리자의 구분
- 자동으로 테이프 장치에 대기중인 프로그램을 한 번에 하나씩 적재하고, 실행
다중프로그래밍 운영체제
출현 배경
- 1960년대 중반
- CPU 등 하드웨어 속도 개선, 컴퓨터 가격 증가
- 프로그램의 실행 형태로 인한 CPU의 유휴시간 발생
- 프로그램 실행 형태 : CPU 작업 - I/O 작업 - CPU작업 - I/O 작업의 반복
- I/O 작업이 이루어지는 동안 CPU는 놀면서 대기
- CPU의 유휴시간을 줄일 필요
다중 프로그램 기법 출현
- 미리 여러 프로그램을 메모리에 적재
- 메모리가 수용할 만큼 다수의 프로그램 적재
- 프로그램 실행 도중 I/O가 발생하면,
- CPU에게 메모리에 적재된 다른 프로그램 실행시킴
정의
- 다중프로그래밍은 여러 프로그램을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 I/O가 발생하면, 입출력이 완료될 때까지 CPU가 메모리에 적재된 다른 프로그램을 실행하는 방식
다중프로그래밍 도입으로 인한 이슈
큰 메모리 이슈
- 여러 프로그램을 동시에 메모리 올려놓기 위해서는 메모리의 크기 늘릴 필요
프로그램의 메모리 할당 및 관리 이슈
- 몇 개의 프로그램 적재? 메모리 어디에 적재? 프로그램 당 할당하는 메모리 크기?
메모리 보호 이슈
- 프로그램이 다른 프로그램의 영역을 침범하지 못하게 막는 방법 필요
CPU 스케줄링과 컨텍스트 스위칭
- 실행시킬 프로그램 선택하는 스케줄링 필요
- 프로그램의 실행 상태를 저장할 컨텍스트(현재의 작업환경) 정의
- 컨텍스트 스위칭 필요
인터럽트 개념 도입
- 운영체제가 입출력 장치로부터 입출력 완료를 전달 받는 방법 필요
동기화(순서대로 접근한다)
- 여러 프로그램이 동일한 자원을 동시에 액세스할 때 발생하는 문제 해결
교착 상태 해결
- 프로세스들이 상대가 가진 자원을 서로 요청하면서 무한대기하는 교착상태 해결
시분할 다중프로그래밍(Time Sharing Multiprogramming) 운영체제
출현 배경
- 다중프로그래밍 운영체제와 거의 동시에 연구 시작
- 배치 처리와 다중프로그래밍의 다음 2가지 문제점 인식
- 비 대화식 처리방식
- 느린 응답시간, 오랜 대기 시간
시분할 운영체제의 시작
- 1959년 MIT 대학, John McCarty 교수에 의해
- 빠른 프로그래밍 디버깅 필요
- McCarty 교수가 당면한 문제
- 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안 → 유닉스
- 터미널이란? 키보드+전화선+모뎀으로 구성된 장치
- 사용자는 자신의 터미널을 이용하여 메인 컴퓨터에 원격 접속
- 운영체제는 시간을 나누어 돌아가면서 각 터미널의 명령 처리
- CTSS 시분할 시스템 개발
- 1962년 MIT
개인용 운영체제
출현 배경
- 메인 프레임에서, 성능이 향상된 미니 컴퓨터 시대로 바뀜
- 미니 컴퓨터 역시 한 방을 가득 채울 수준의 크기였음
- 미니 컴퓨터에서의 시분할 시스템 사용의 불편함
- 응답 속도 저하 - 많은 사용자로 인해 응답 속도 저하
- 공간 제약 – 터미널이 있는 전산실에서만 컴퓨터 사용 가능
- 개인용 컴퓨터 필요성
- 원격 접속 없이, 가정에서, 혼자 사용
개인용 컴퓨터 등장
- 마이크로프로세서 CPU 장치 개발
- 1971년, Intel 4004 처음 시장에 등장
- 개인용 컴퓨터 등장
- 메인 프레임이나 미니 컴퓨터에 비해 저렴, 소형
개인용 운영체제 등장
- 1980년 개인용 운영체제 MS-DOS 등장
임베디드 운영체제
임베디드 컴퓨터
- 자동차, 비행기 제어 시스템, 공장, 디지털 TV, ATM기, 네비게이터, 엘리베이터 등 가전제품이나, 산업 현장의 기계들, 상용 제품 등에 내장되어 장치들의 목적을 지원하는 소형 컴퓨터
임베디드 운영체제
- 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능을 수행하며, 장치를 제어하는 프로그램이 원활히 실행되도록 하는 목적
모바일 운영체제
모바일 컴퓨터
- 하드웨어의 급속한 발전으로 휴대 가능한 크기로 들고 다닐 수 있는 모바일 장치 혹은 모바일 커뮤터 출현
- 스마트폰, 태블릿, 스마트 시계와 같은 입는 컴퓨터 등 어디에서나 휴대 가능한 컴퓨터
모바일 운영체제
- 모바일 컴퓨터 내 장치들을 구동시키고, 이들을 활용하는 다양한 응용 프로그램을 실행 할 수 있도록 특별히 설계된 운영체제
운영체제의 종류
데스크톱 운영체제
- PC나 노트북 등 책상에 놓고 사용하는 데스크톱 컴퓨터를 위한 운영체제
- 개인의 문서 편집, 웹 서핑, 게임, 프로그램 개발, 음악 감상 등 범용 사용
- 비전문가도 여러 응용 프로그램을 쉽게 활용하도록 하는데 목적
서버 컴퓨터 운영체제
- 네트워크에 연결하고 24시간 실행되는 컴퓨터, 보안 중요
모바일 운영체제
- 모바일 전화기, 스마트폰 등 다양한 이동용 혹은 휴대용 장치에서 실행되도록 만들어진 운영체제, 절전과 보안이 중요
임베디드 운영체제
- 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능
실시간 운영체제
- 실시간 애플리케이션(혹은 태스크)를 각각 정해진 데드라인 내에 처리되도록 보장하는 것을 목표
'학교 공부 > 운영체제' 카테고리의 다른 글
[운영체제] 5주차 - 스레드와 멀티스레딩 (0) | 2023.04.21 |
---|---|
[운영체제] 스레드 동기화 (0) | 2023.04.17 |
[운영체제] 4주차 - 프로세스와 프로세스 관리 (0) | 2023.03.27 |
[운영체제] 3주차 (0) | 2023.03.20 |