2023. 3. 28. 19:59, 학교공부
더보기
- 강의 목표
- 운영체제의 정의와 목표를 알고 기능을 간단히 이해한다.
- 운영체제가 없던 시절에서 운영체제가 생겨나는 태동 과정을 앎으로써 운영체제의 발단과 역할을 이해한다.
- 원시 운영체제 이후 운영체제의 발전 과정을 이해한다.
- 다중프로그래밍 (멀티태스크) 의 출현이 가져온 컴퓨터 시스템과 운영체제의 발전과 영향을 이해한다.
- 운영체제의 종류와 특징을 간단히 이해한다.
운영체제 정의
- 사용자와 컴퓨터 하드웨어 사이에 중계 역할을 하면서 프로그램을 실행/제어하는 시스템 소프트웨어이다.
- 운영체제는 컴퓨터가 아니다.
- 운영체제는 실체가 있는 소프트웨어이다.
- 우리가 실제 사용하는 것들은 모두 응용 소프트웨어이다.
- 컴퓨터가 켜질 때 처음으로 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어
- 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어
더보기
- 정리컴퓨터의 자원을 독점적으로 관리한다.
- 운영체제는 컴퓨터가 아니고 소프트웨어이다. (시스템 소프트웨어)
- 응용소프트웨어
- 흔히 아는 실행 프로그램
- 크롬 / 한글 / 엑셀 등등
- 실제 시스템 소프트웨어는 보이지않는다.
- Linux , Unix, Windows, Mac Os 등
- 하드웨어를 제어해준다.
- Cpu, Cache , Ram, 디스크, 네트워크, MNU, DMAC (외부적인 장치)
- 흔히 아는 실행 프로그램
- 운영체제는 컴퓨터의 모든 자원을 관리한다.
- 자원
- 하드웨어 자원 - Cpu, Cache , Ram, 디스크, 네트워크, MNU, DMAC (외부적인 장치)
- 소프트웨어 자원 - 응용프로그램
- 데이터 자원 - 파일, 데이터베이스 등
- 자원
- 운영체제는 자원에 대한 독점 권한을 소유한다.
- 자원에 대한 모든 관리 권한은 운영체제에 있다.
- 자원 할당, 자원 공유, 자원 액세스, 자원 입출력 등
- 램이 한정적이기 때문에 효율적으로 관리할 수 있도록 관리 권한을 위임한다.
- 에 ) 파일 생성 → 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력 등
- 자원 할당, 자원 공유, 자원 액세스, 자원 입출력 등
- 자원에 대한 모든 관리 권한은 운영체제에 있다.
- 운영체제는 관리자이다. (Supervisor)
- 실행중인 프로그램 관리, 메모리 관리
- 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 등 관리 등
- 운영체제는 소프트웨어이다.
- 커널(kernel) 이라고 불리는 핵심 코드와 UI를 비롯한 도구 프로그램들 (tool/utility) , 장치를 제어하는 디바이스 드라이버들로 구성된다.
- 커널이 가장 중요한 역할을 가진다.
더보기
시스템 소프트웨어는 눈에 보이지 않는다.
운영체제는 하드웨어 자원과 소프트웨어 자원, 데이터 자원 을 관리한다.
자원에 대한 독접 권한을 소유하고 관리자 역할을 하는 소프트웨어이다. (커널, 도구프로그램, 디바이스 드라이버 들로 구성)
운영체제의 목적과 기능
- 운영체제의 목적
- 사용자의 컴퓨터 사용 편리성
- 사용자에게 편리성을 제공한다.
- 컴퓨터의 자원 관리 효율성
- 사용자의 컴퓨터 사용 편리성
- 운영체제의 기능
- CPU / 프로세스 관리
- 과거엔 cpu에는 하나의 프로세스밖에 없었다.
- 요즘엔 여러개의 프로세스를 갖고있다.
- 필요할때만 프로세스가 동작하거나 쉬도록 관리한다.
- 단순히 디스플레이만 해도 그래픽카드의 프로세스가 동작하고 있는 것이다.
- 스레드에 대한 개념도 들어간다.
- 메모리 관리
- 파일 시스템 관리
- 장치 관리
- 네트워크 관리
- 보안 관리
- 기타 관리
- 사용자 관리 / 사용자 계정 관리
- 통계 → CPU / 메모리 / 네트워크의 사용 시간, 사용자의 접속 시간 등
- 오류 발견 및 대응
- 부팅
- 하드웨어 / 소프트웨어 사이의 전반적인 관리를 담당한다.
- 응용프로그램을 위해선 실행 언어가 필요하다. (대표적으로 C언어)
- CPU / 프로세스 관리
더보기
운영체제는 사용자에게 편리성을 제공한다.
하드웨어 / 소프트웨어 사이의 전반적인 관리를 담당한다.
운영체제의 태동
- 고정 프로그램 방식
- 1940년대 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대
- 0과 1로 , 고정식으로 모든 연산이 이루어졌다. (로터리 방식 Lottery)
- 운영체제에 대한 개념이 없었다.
- 소프트웨어 / 하드웨어 분리 개념이 없고 모든것이 하드웨어로 제작되었다.
- 프로그래밍
- 종이에 스위치와 전선 연결로 작성
- 배선판에 전선 연결, 프로그램을 기계에 고척화 했다.
- 하나의 명령을 구성하기 위해 여러가닥의 전선 연결
- 프로그램의 전체 구축에 수천개의 전선 연결 (유지보수 힘듬)
- 새로운 프로그램을 작성할 때 큰 고통이 있었다.
- 41 년 Z3 펌퓨터
- 44년 콜로서스
- 43~45년 애니악
- 진공관 약 18000개로 구성된 30톤크기의 컴퓨터
- 내장 프로그래밍 방식
- 45년 폰노이만에 의해 제안되었다.
- 51년 EDVAC 컴퓨터를 만들 때 적용
- 오늘날 컴퓨터의 구조가 되었다.
- 내장 프로그램 컴퓨터의 의미
- CPU와 메모리 분리
- 처음부터 메모리에 대한 개념이 나오진 않았을 수도 있다.
- 계산은 CPU가 했기 때문
- 소프트웨어 하드웨어 분리
- 실행할 프로그램을 메모리에 담고 CPU가 프로그램을 실행하는 방식
- 프로그램은 입력장치를 통해 메모리에 적재
- 펀치카드에 구멍을 뚫어 프로그램을 작성했다. (새로운 입력장치)
- 카드 리더기로 프로그램을 메모리에 적재했다.
- 메모리 장치 ↔
- 제어장치 CU
- 연산장치 ALU
- 레지스터
- 모든 cpu마다 각각 다른 형태의 레지스터가 있을 수도 있다.
- 컴노이만 구조에서 기본적인 구조가 바뀌지 않았다.
- CPU와 메모리 분리
더보기
- 운영체제에 대한 개념이 없던 고정 프로그램 방식 (0과 1로만 연산됨, 하드웨어만 존재)
- 오늘날 컴퓨터의 구조가 된 폰노이만 구조를 따르는 내장 프로그래밍 방식 (CPU와 메모리, 소프트웨어와 하드웨어 분리) / 메모리에 프로그램을 적재 후 실행
- 프로그램 로딩 시대
- 운영체제 개념의 시작
- IBM 701 메인프레임
- 54년 IBM에서 만든 첫 번째 내장 프로그래밍 컴퓨터
- 첫번째 범용 컴퓨터
- 판매하지 않고 대여만 가능했다. (완벽하지 않았기 때문)
- 기계만 대여 , 소프트웨어 제공 X
- 대여한 고객(기업) 이 모든 것을 했어야 했다.
- 일반적인 개발 형태
- 첫번째 카드
- 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성 (컴파일)
- 두번째카드부터 행동하는 프로그램을 작성했다. (실행)
- 첫번째 카드
- 로더 프로그램 필요
- 개발자가 뒷 카드들을 메모리에 적재하는 프로그램을 첫번째 카드에 작성하는 반복되는 시간 낭비를 줄일 필요가 있었다.
- 이 코드를 로더라고 부른다.
- 로더는 모든 개발자에게 공통으로 필요했다.
- 로더가 운영체제로 발전
- 오늘날 운영체제의 가장 기본적인 기능
- 개발자가 뒷 카드들을 메모리에 적재하는 프로그램을 첫번째 카드에 작성하는 반복되는 시간 낭비를 줄일 필요가 있었다.
- GM OS
- 55년 IBM 701의 고객 기업 GM에 의해 개발되었다.
- 핵심 개념
- 로더 프로그램을 사용자 프로그램에서 분리
- 사용자의 직접 적재해야하는 로더 프로그램 작성의 번거로움을 해소했다.
- 테이프에 저장, 필요할 때마다 실행
- 해당 로더 프로그램을 모니터 라고 불렀다.
- 후세대 Genera lMotors Operating System (GM OS) 라고 불러졌다.
- 테이프 장치 → 로더 프로그램 → 사용자 프로그램 (여기까지 한번만) → CPU
- GM은 IBM 701의 처리 속도를 높인 IBM 704를 주문
- 최초의 운영체제인 GM-NAA I/O 개발
- 56년 GM과 NAA의 공동개발
- 운영체제로서의 모습 갖춤
- 배치 방식으로 작동 (batch operating system)
- (컴퓨터의 setup과 비슷하다. 루틴을 만들어주는것)
- 개발자들이 작성해놓은 순서대로 하나씩 메모리에 적재후 실행
- 배치 방식으로 작동 (batch operating system)
- I/O 프로그램을 메모리에 상주 (오늘날 운영체제 방식)
- 실제 cpu 는 성능이 좋지만 외부로 나가는것은 그만큼 성능이 떨어진다.
- cpu는 대부분 64비트 이지만 출력하는 것들은 대부분 32비트 (데이터가 반절)
- 그런것들을 효율적으로 쓰기 위해서 루틴들을 라이브러리 형식으로 갖추고 프로그램 사이에 공유
- 운영체제로서의 모습 갖춤
- 56년 GM과 NAA의 공동개발
- 어셈블러 코드
- 어셈블리어 프로그램을 기계어 코드로 번역해줌
- 운영체제 메인 코드와 공통 입출력 코드
- 운영체제 메인 코드 - 시작 코드
- 공통 입출력 코드 - 장치 입출력을 다루는 프로그램 코드
- 라이브러리 개념 등장
- 별도로 제어할 수 있도록
- 라이브러리 개념 등장
- 최초의 운영체제인 GM-NAA I/O 개발
더보기
- 로더 프로그램이 필요했던 운영체제 개념의 탄생
- 로더가 운영체제로 발전되었다.
- 로더 프로그램 , 사용자 프로그램을 분리한 GM OS 탄생 (로더 프로그램 작성의 번거로움 해결)
- 배치 방식으로 작동하는 제대로된 운영체제라 할 수 있는 GM-NAA I/O 개발 (작성해놓은 프로그램 순서대로 메모리에 적재후 실행되는 방식, 루틴을 라이브러리 형식으로 갖춤)
운영체제 태동 시절
- 1세대 컴퓨터 시절 → 운영체제 암흑 시대
- 운영체제 개념이 없었다.
- 배치 운영체제
- 컴퓨터가 유효시간이 발생하게 되었다.
- 효율적으로 사용하기 위해서 개발자와 관리자가 구분되었다.
- 개발자 → 펀치카드를 입력 덱에 두고 결과를 기다림
- 관리자 → 한번에 하나씩 적재하고 실행하도록 관리
- 다중 프로그래밍 운영체제
- CPU속도 개선, 컴퓨터 가격 증가
- 많은 사업자들이 활용할 수 있는 기회가 생겼다.
- CPU작업 →IO 작업 → CPU작업 → ..의 반복
- IO작업이 이루어지는 동안 CPU는 놀면서 대기했기 때문에 CPU의 유효시간을 줄일 필요가 있었기때문에 다중 프로그래밍 기법 출현
- 프로그램 실행중에도 입출력을 계속 해라!
- 다중 프로그래밍으로 인한 이슈
- 메모리의 크기를 늘릴 필요가 있었다.
- 메모리 할당 및 관리 이슈
- 프로그램이 다른 영역을 침범하지 못하도록 막는 방법이 필요했다.
- CPU 스케줄링과 컨텍스트 스위칭
- 프로그램의 실행 상태를 저장할 컨텍스트 정의
- 컨텍스트 스위칭이 필요했다.
- 여러개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것. 즉, CPU에 실행할 프로세스를 교체하는 기술이다.
- 컨텍스트 스위칭을 하는 주체는 스케줄러이다.
- 인터럽트 개념 도입
- IO 장치로부터 입출력 완료를 전달받는 방법이 필요했다.
- 동기화
- 여러 프로그램이 동일한 자원을 동시에 액세스할때 발생하는 문제 해결 필요
- 교착 상태 해결
- 프로세스들이 상대가 가진 자원을 서로 요청하면서 발생하는 문제 해결 필요
- 시분할 다중 프로그래밍 운영체제
- 시분할 운영 체제는 많은 사용자들이 컴퓨터를 공유하도록 한다 .
- 다중 프로그래밍 운영체제와 거의 동시에 연구가 시작됨
- 비 대화식 처리방식과 느린 응답시간, 오랜 대기시간의 문제점 인식
- 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안
- 터미널 → 키보드 + 모니터 + 전화선 + 모뎀
- 사용자들은 터미널을 이용하여 메인 컴퓨터에 원격으로 접속하였다.
- 운영체제는 시간을 나누어 돌아가면서 각 터미널의 명령을 처리 할 수 있다. → CTSS 시분할 시스템 (1962 MIT)
- 프로그램 ↔ 시분할 운영체제 ↔ 터미널
더보기
- 배치 운영체제 → 다중 프로그래밍 운영체제 → 시분할 다중 프로그래밍 운영체제 순서로 발전
- 유효시간을 줄일 필요가 있었기에 배치 운영체제에서 다중 프로그래밍 운영체제로 발전
- 컨텍스트 스위칭과 인터럽트의 개념이 생겼다.
https://velog.io/@hayeon/Context-Switching%EC%99%80-Interrupt
개인용 운영체제
- 출현 배경
- 메인 프레임 → 성능 향상된 미니 컴퓨터 시대
- 사용자가 늘어나게 되면서 개인용 컴퓨터의 필요성을 느끼게 됨
- 원격 접속 X 개인으로 사용
- 인텔 4004 가 시장에 등장 (1971) 마이크로 프로세서 CPU장치 (애니악에 버금가는)
- CPM을 모티브해 나온것이 1980년 개인용 운영체제 MS-DOS 등장 (320KB)
- 임베디드 컴퓨터 (내장형)
- OS를 기본으로 사용하는 다양한 시스템이 나오게 되었다.
- 소형 컴퓨터
- 임베디드 시스템 : (영어: embedded system, 내장형 시스템 )은 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다.
- 임베디드 운영체제
- 모바일 컴퓨터
- 휴대 가능한 크기로 들고 다닐 수 있는 모바일 장치 혹은 모바일 컴퓨터 출현
- 모바일 운영체제
'학교공부' 카테고리의 다른 글
운영체제 이론 03-21 (정리) (0) | 2023.03.31 |
---|---|
정보통신 개론 03-20 (정리) 정보통신 시스템의 구성 (0) | 2023.03.31 |
정보보안개론 03-15 (정리) 보안공격 사례와 시스템 보안 관리 (0) | 2023.03.28 |
네트워크 - 0310 (정리) 네트워크의 목적과 용어 (0) | 2023.03.28 |
정보보안 개론 03-08 (정보보안의 역사와 해킹) (0) | 2023.03.11 |
Comments, Trackbacks