1️⃣ OS
💙 Sort of OS?
- 윈도우(Windows), 맥 OS(Mac OS), 리눅스(Linux), 유닉스(Unix) etc…
💙 CPU, RAM, HDD, OS, ROM?
💙 컴퓨터에 OS가 설치되지 않았다면?
- 컴퓨터 전원을 킨다면→ 전원이 켜지기만 함
- 프로그램을 실행시키려면→ 프로그램 존재X
- 프린트를 시키기, 하드디스크에 파일 저장 불가
💙 What is OS?
- 사용자&컴퓨터 하드웨어 사이 중개자
- 컴퓨터 하드웨어를 관리하는 S/W (ex. 블루투스 연결/제거)
💙 운영체제의 목표
- 사용자적 관점
- 컴퓨터 시스템을 사용하기 편리하게 만들자 (사용자가 원하는 것을 보다 쉽게 해결할 수 있도록)
- user-friendly (OS의 shell 부분, interface)
- 시스템적 관점
- 컴퓨터 하드웨어를 효율적으로 사용하자 (하드웨어를 낭비하지 말고, 성능을 향상하자)
- OS의 kernel 부분
💡 즉, 컴퓨터 하드웨어를 효율적으로 관리하여 성능을 높이고, 사용자에게 편의를 제공하는 프로그램(S/W)
💙 Structure of Computer System
- 4가지 구성 요소
- 하드웨어
- ex. CPU, memory, I/O 장치
- 운영체제
- 응용프로그램
- 사용자
💙 운영체제가 하는 일 (User view)
사용되는 인터페이스에 따라 운영체제가 하는 일이 달라짐 (User/System View)
- 일반적 사용자
- 편리함, 좋은 성능 want
- 자원의 이용률에는 관심X
- 메인프레임 또는 미니 컴퓨터에 연결된 터미널 사용자
- 자원 이용 극대화
- 워크스테이션-서버 사용자
- 개인의 사용 편의성 & 자원 이용 간 조화
- 휴대용 컴퓨터
- 전력 소모 줄이기
- 사용의 편의성
- 장치에 내장된 컴퓨터 또는 자동차에서 사용되는 일부 컴퓨터
💙 운영체제가 하는 일 (System view)
- Resource Allocator/Manager
- 모든 자원을 관리
- 효율, 공정한 자원 사용을 위한 결정
- Control program
- 컴퓨터의 잘못된 사용, 부적합한 사용을 방지
2️⃣ Computer-System Organization (컴퓨터 시스템 구성)
💙 Computer-System operation
- 하나 이상의 CPU+장치 제어기
- → 공유 메모리에 접근할 수 있도록 공통 버스로 연결 (데이터 버스)
- CPU와 장치는 병행수행
- ∴ 메모리를 사용하기 위해 서로 경쟁
- 메모리에 동시에 여러 프로그램이 올라갈 수 있음
- 컴퓨터가 시작하기 위해서… (ROM이 하는 작업)
- POST 작업
- 장치가 다 갖추어져 있는지 확인
- 보통 ROM, EPROM에 저장
- 펌웨어라고 칭함
- 펌웨어: 기기의 동작을 확인하고 하드웨어를 체크함
- 시스템의 모든 구성 요소를 초기화
- 운영체제 커널을 메모리에 적재 후, 커널 실행
- 커널은 ROM이 RAM에 로드시킴 (커널도 OS이기때문)
- 시스템은 완전히 부팅된 후 event 발생 대기 (User의 명령 대기)Boot Loader 작업
- #What is Kernel?
→ OS는 kernel과 shell 부분으로 나뉨- → 하드웨어가 application을 직접적으로 실행시킬 수 없어 OS가 필요
- POST 작업
💙 Operating-System Structure
- 배치 프로그램
- 여러 프로그램을 차례 차례 들어간 순서대로 실행
- 두가지 이상 프로그램을 동시에 실행할 수 없음
- (ex. 음악 들으면서 문서 작업하기 불가능)
- 이러한 문제점을 보완하기 위해 다중 프로그래밍, 시분할 시스템 출현
- 다중 프로그래밍
- CPU가 최소 하나의 작업을 수행하게 함 (쉬지 않도록)
- 실행 중인 작업이 대기가 걸린다면, OS는 다른 작업으로 전환
- 여러 작업을 메모리에 적재
- 자원 효율을 극대화 함
- → I/O 작업과 CPU 작업이 동시에 적재되어 있도록!
- but…
- 다중 프로그래밍 방식은 입출력이 일어날 때만 스케줄링이 일어남
- 결과적으로 한 프로그램의 입출력 빈도와 시간이 다른 프로그램에 영향을 줌
- → 이를 보완하기 위해 시분할 시스템 등장
- CPU가 최소 하나의 작업을 수행하게 함 (쉬지 않도록)
3. 시분할 시스템
- 아주 짧은 시간 간격을 두고 여러 프로그램을 전환하면서 실행
- CPU가 빈번하게 다른 작업을 전환하도록 논리적으로 확장함
- 사용자들이 컴퓨터를 공유할 수 있음
- 시스템은 한 사용자에서 다른 사용자로 빠르게 전환함 → 사용자들이 필요할 때 컴퓨터를 자유롭게 사용 가능
- 대화식 컴퓨팅 환경을 제공
- 입출력 하드웨어의 출현
- 응답시간이 1초 미만이어야 함
- 사용자는 메모리에 실행 중인 프로그램 적어도 하나 가짐
- (실행중인 프로그램 → 프로세스)
- 동시에 여러 작업이 실행할 준비가 되어 있으면 CPU Scheduling (누가 먼저 CPU에 들어갈 것인가?) 진행
- CPU Scheduling → OS가 control 함
💡 CPU는 한 작업밖에 수행하지 못하지만, 스위칭이 빠르게 일어남
∴ 사용자의 눈에는 연속적인것 처럼 보임
3️⃣ Interrupt 인터럽트
💙 종류
- 하드웨어 인터럽트
- 운영체제의 처리를 필요하는 상황을 전기적 신호를 사용해 알림
- 기계검사 인터럽트
→ 배터리가 다 떨어져 전원이 off - 외부 인터럽트
→ 스탑워치, 알람 - 입출력 인터럽트
→ 입출력 종료, 입출력 오류에 의해 CPU의 기능이 요청되는 경우
ex. 파일 복사 시, 다 됐다는 알람 - 프로그램 검사 인터럽트
→ 보안 프로그램 - 메모리 공간의 불법적 접근 막아줌
→ 할당 받은 메모리 공간을 벗어나려 할 때종류 (HW/SW)
- 기계검사 인터럽트
- 운영체제의 처리를 필요하는 상황을 전기적 신호를 사용해 알림
💡 OS는 interrupt가 요청되면 메뉴얼을 실행시킴 (ISR)
→ 이걸 memory 에 넣어줌 (일종의 명령어 개념)
→ CPU는 하던 작업을 멈추고 IR을 해결후, 다시 실행
2. 소프트웨어 인터럽트
- 시스템 호출 (System Call)
- 프로그램 실행 중, 프로그램 상 처리 불가능 오류 or 이벤트를 알림
- Software에서 OS에게 System call 요청 (개발자가 의도적으로)모니터 출력할 때 (cout, printf)
- ex. 사용자의 키보드 입력 받을 때 (cin, scanf)
- CPU 내부 인터럽트 (자체적 IR)
- 트랩, 예외라고 칭함
- 포인터 연산 실수, 0으로 나누고자 할 때 …etc
- 인터럽트는 인터럽트 서비스 루틴(ISR)에게 제어권 넘김
- ISR은 인터럽트 벡터에 저장되어 있음
- 인터럽트 벡터?
→ 해당 인터럽트를 처리하기 위한 명령어들의 주소값을 가지는 표
- 인터럽트가 들어오고 프로그램이 중단되면, 프로그램 상태를 스택에 저장함 (PC와 SR)
4️⃣ Operating-System Operations
💙 Operating-System Operations
- 다수가 유한한 자원을 공유할때, 악의적인 한 개체로부터 시스템 보호
- 이중모드(Dual-mode) (User/kernel mode)
- OS가 자신을 보호하기 위한 장치
- Mode bit (1 or 0)
- 일부 명령어 (STOP, EXIT, Set Timer)를 특권 명령어로 지정
- → 커널 모드에서만 실행 가능하게 함
- 입출력 장치 보호
- A와 B를 프린팅 한다고 가정
- A가 전부 출력된 후, B가 출력되도록 하게 함
- 메모리 장치 보호
- CPU 장치 보호
- 가장 비싸고 중요한 하드웨어인 CPU를 하나의 프로세스에 의해 점유당하지 않게 하는것이 목적
- 시분할 시스템 (타이머)
- → 타이머: CPU를 보호하는 중요한 장치
💙 Storage Structures
- 메인 메모리 (RAM)
- CPU가 접근 가능한 대용량 휘발성 저장 매체
- (레지스터나 캐시메모리도 대용량이 아니라면 CPU가 접근 가능함)
- 상황에 따라 아무곳이나 갈 수 있는 임의 접근 가능
- 보조 저장 장치
- 대용량 비휘발성 저장 매체
- ex. 하드 디스크, 반도체 디스크 (SSD-ROM 기반)
- 계층 구조
- 기준→ 속도, 비용, 휘발성 여부
- 캐싱
- 자주 사용하는 정보나 명령어를 저장공간에 미리 가지고 있다가 복사해옴
- 메인 메모리→ 보조 저장장치를 위한 캐시
💙 Process Management
- 프로세스 → 실행 중인 프로그램
- 프로그램-수동적, 프로세스-능동적
- User가 프로그램을 실행시켜주면 프로세스가 됨
- 프로세스는 업무 수행을 위해 자원을 필요로 함
- OS에 요청 ( OS의 시스템 콜 사용)
- CPU, 메모리, I/O, 파일
- 프로세스는 순차적으로 명령어를 한번에 하나씩 실행
- 프로세스가 종료될 때, 재사용이 가능한 모든 자원을 반환
- 운영체제의 프로세스 관리 (여러 프로세스 협업 가능)
- 프로세스간 동기화 할 수 있는 기법 제공
- 프로세스간 통신할 수 있는 기법 제공
- 교착상태를 처리하기 위한 기법 제공
💙 Memory Management
- 메모리-바이트의 대용량 배열, 각 바이트는 자신의 주소 가짐
- 프로그램 실행에 필요한 데이터 전체 또는 일부가 메모리에 있어 야 함
- 로지컬/피지컬 주소 변환: OS
- 운영체제의 메모리 관리
- 프로세스가 사용 중인 메모리 영역 추적
- 메모리로 어느 프로세스와 데이터를 적재하거나 내보낼지 결정
- 필요에 따라 메모리 할당하고 반환함
💙 Storage Management
- 파일(file): 물리적인 특성을 추상화하여 논리적인 저장 단위
- 파일 생성자에 의해 정의된 관련 정보의 집합체
- 디렉토리 단위로 구성
- 각 저장 매체는 접근 속도, 데이터 전송률, 접근 방식(순차or임의)등 특성이 존재
- 운영체제의 파일시스템 관리
- 파일과 디렉터리 생성과 삭제&조작하기 위한 기본 기능 제공
- 파일을 보조 저장장치에 매핑
- 비휘발성 저장장치에 파일 백업
- 비휘발성 대용량 데이터는 디스크에 저장
- 운영체제의 대용량 저장장치 관리
- 빈 공간 관리
- 저장장소 할당
- 디스크 스케줄링 (최단거리 알고리즘)
- 3차 저장장치
- optical storage, magnetic tape, USB etc.
- WORM (write-once, read-many-times) and RW (read-write))
- Mount and unmount 관리
- optical storage, magnetic tape, USB etc.
- 다양한 계층의 저장장치 성능
- register>cache>main memory>solid state disk>magnetic disk
- 순으로 용량↓, 속도↑, 처리량↑
💙 Protection and Security
- 보호(Protection)
- OS에서 정의한 리소스에 액세스하는 것을 제어하는 모든 메커니즘
- 보안(Security)
- 시스템 방어
- ex. 서비스 거부, 웜, 바이러스, 신분 도용, 서비스 절도 등
- OS의 보호와 보안 기법
- 사용자 식별자에는 이름 및 연동된 번호 존재, 사용자 당 하나씩 할당
- UNIX 경우 파일당 권한 허용 범위 설정 가능
- 그룹 식별자(그룹 ID)를 통해 사용자 집합 정의 & 관리 가능
- 권한 상승(사용자→관리자)은 더 많은 권한을 가진 유효 ID로 변경
💙 Computer-System Architecture
- 대부분의 시스템 → 하나의 범용 CPU 사용
- 다중처리기(Multiprocessors) 시스템의 사용, 중요성 ↑
- 병렬 시스템, 멀티코어 시스템
- 장점
- 증가된 처리량
- 규모의 경제 (많으면 많을수록 크다)
- 증가된 신뢰성 –결함 허용 (1명의 과제 vs 4명의 팀플)
- 두 가지 형태
- 비대칭 다중처리
- 각 처리기가 특별한 임무를 수행
- 서로 다른 업무를 처리 후, 하나로 합침
- 하나로 모아줄 대장 필요
- 대칭 다중처리
- 각 처리기는 공통적인 임무를 수행
- 다같이 동일 임무 수행
- 비대칭 다중처리
- 대칭 다중처리 구조
- 멀티 코어 디자인
- 단일 코어를 여러 개 가진 칩보다 효율적
- 하나의 CPU안에 core가 여러개
- 클러스터 시스템(Clustered Systems)
- 둘 이상의 독자적 시스템 or 노드들을 연결
- storage-area network (SAN)를 통하여 저장장치를 공유
- → 물리적으로 떨어져 있어도 상관 없음
- 실패해도 지속가능한 고가(high-availability)용 서비스 제공
- → 비대칭/대칭 클러스터링
- 일부 클러스터는 고성능 컴퓨팅 환경을 제공
- ex. 기상청, 우주항공
- 응용프로그램→ 병렬처리가 가능해야함
- 각각 물리적으로 떨어진 시스템을 네트워크로 연결함
- → 고성능을 낼 수 있음
5️⃣ Computing Environments
💙 Computing Environments
- Mobile computing
- 스마트 폰, 태블릿 등 (Private 한 장치)
- 이 기기들과 전통적인 컴퓨터 사이의 기능적 차이?
- 작고 가볍다
- 위치 서비스 이용 가능
- 통신을 위한 수신기가 존재함
- LAN, 모바일, 네트워크 블루투스…etc 모두 내장 (단, 서로 간섭받지 않게 위치)
- 근거리 통신망 LAN내장
- 입력장치 존재: 마이크, 터치스크린, 가상키보드…etc
- 연결을 위해 IEEE 802.11 무선 또는 셀룰러 데이터 네트워크 사용
- Apple ios, Google Android
- Distributed Systems
- 네트워크로 연결된 개별적, 서로 다른 특징을 가진 시스템의 집합
- 네트워크는 통신 경로, TCP/IP 주사용
- 근거리 통신망 (LAN), 광역 네트워크 (WAN)…etc
- 네트워크는 통신 경로, TCP/IP 주사용
- 네트워크 OS는 네트워크로 연결된 시스템 간 기능 제공
- 시스템끼리 메세지를 교환 할 수 있는 통신 체계
- 단일 시스템인 듯한 환상 (물리적으로 떨어져있지만 하나의 파일 시스템으로 돌아가도록)
- 고급 인력 vs 보통 인력 5명 → 일반적 시스템(보통 인력 5명) 여러개를 쓰는게 효율적
- 네트워크로 연결된 개별적, 서로 다른 특징을 가진 시스템의 집합
- Client-Server Computing
- 클라이언트가 생성한 요청에 서버
- Compute-server 시스템: 클라이언트에게 서비스 (데이터베이스)를 요청하기 위한 인터페이스 제공
- 파일 서버 시스템: 클라이언트가 파일을 저장 및 검색 할 수 있는 인터페이스를 제공
- 서버 서비스 기본구조: request&response
- 웹서버의 필수 기능
- 동시 접속자수 파악
- 꺼지지 않아야 함
- 데이터베이스와 연동될 수 있는 구조 (독단적으로 존재하지 않음)
- 클라이언트가 생성한 요청에 서버
- Peer-to-Peer Computing
- 네트워크 구조는 client-server와 P2P로 나뉘어짐
- P2P는 클라이언트와 서버를 구분하지 않음
- 각 peer은 클라이언트, 서버, 또는 클라이언트&서버(둘 다)의 역할
- 단, 클라이언트와 서버는 정확히 구분하지 않음
- 상황에 따라 역할이 바뀜
- 모든 노드는 peer(동료)
- OS의 관점→ 노드
- 네트워크의 관점→ peer
- 컴퓨터가 항상 켜져있어야 함
- 누군가 나에게 작업을 요청하면 나는 서버, 요청자는 클라이언트가 됨
💙 Virtualization (가상화)
- OS가 다른 OS내에서 하나의 응용처럼 실행
- 하나의 하드웨어 위에 여러 OS를 동시에 독립적으로 구동하는 것
- ex. 맥북에서 윈도우가 가능하게함
- 연구와 호환성을 위하여 랩탑 or 데스크톱 컴퓨터에서 여러 OS를 실행
- 광범위하게 사용중+점점 성장중
- VMM이 가상화 서비스 제공
- 에뮬레이션
- 소프트웨어를 한 장치가 정말로 다른 장치라고 믿도록 속이는 것
- VMware (가상머신(virtual machine))
- Cloud Computing
- 컴퓨팅, 스토리지, 앱등을 네트워크를 통한 서비스로 제공
- 가상화를 기능의 기본으로 사용 → 가상화의 논리적 확장
- 종류
- 공중 클라우드 (ex. naver)
- 누구나 사용 가능
- 사유 클라우드 (ex. 학교 메일 서비스)
- 인증받은 사람만 사용가능
- Software as a Service
- 하나 이상의 응용 프로그램 (ex. 워드 프로세서)
- Platform as a Service
- 소프트웨어 스택 (ex. 데이터베이스 서버)
- Infrastructure as a Service
- 서버 or 저장장치 (ex. 백업용으로 사용할 수 있는 저장장치)
- 공중 클라우드 (ex. naver)
💻 Reference
'IT > 운영체제' 카테고리의 다른 글
[Chapter 02] Operating System Structures (0) | 2024.04.06 |
---|