-
CS 스터디 - 컴퓨터 시스템의 구조CS📟 2022. 10. 14. 17:42
* 이 글은 반효경 교수님의 수업을 듣고 정리한 글입니다. 정리하는 과정에서 틀린 점이 있거나 잘못 이해한 부분이 있다면 수정하겠습니다.
왜 소프트웨어를 공개한것일까?
- 소프트웨어는 독점체제가 가능한 시장이다.
- 일등이 시장이 장악해버리면 그 아래에 시장을 장악하지 못한 소프트웨어들이 소스를 공개한다.
- 그러면 오픈소스들이 퍼지게 되면서 시장에 침투하게 된다.
- 공유의 힘!
복습
운영체제란 무엇인가?
- 자원을 관리하고, 사용자가 편하게 사용할 수 있게 해주는 소프트웨어
- 좁은 의미
- 메모리에 항상 상주함(커널)
- 넓은 의미
- 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함
- 목적
- 자원의 효율적 관리
- 하드웨어 자원과 소프트웨어 자원
- 최대한의 효율을 내야 하지만 지나친 차별도 배제
- 메모리의 적절한 분배
- 자원의 효율적 관리
운영 체제의 분류
- 단일 작업
- 한 번에 하나의 작업만 처리한다 (옛날)
- 다중 작업
- 동시에 두 개 이상의 작업이 가능하다 (현재)
- 메모리 사용과 분배에 관련한 추가 이슈
- 단일 사용자
- MS-DOS, MS Window
- 다중 사용자
- Linux, Uix, NT server
- 보안 관련 추가 이슈 발생
처리 방식
- 일괄 처리(batch processing)
- 작업 요청의 일정량 모아서 한꺼번에 처리
- 작업이 정말 종료될 때까지 기다려야 함
- 이용자의 편의보다는 한 번에 모아서 처리하는 방식
- 초기 Punch Card 처리 시스템
- 시분할(time sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 일괄처리에 비해 짧은 응답 시간
- 실시간
- 정해진 시간 안에 작업이 반드시 종료됨이 보장되어야 하는 시스템을 위한 OS
- 예) 원자로, 미사일 제어
- 개념 확장
- Hard realtime system
- Soft realtime system
- 프레임을 지켜야 하는 영상처리
- 개념 확장
- Multiprocessor
- 하나의 컴퓨터에 여러 개의 CPU가 존재
운영체제의 예
- 유닉스
- 대부분 C로 작성
- 어셈블리어를 사용하지 않고 C를 만들어서 사용
- 높은 이식성
- 최소한의 커널
- 복잡한 시스템에 맞게 확장 용이
- 초기에는 공개
- 다양한 버전 존재
- DOS
- MS에서 1981년 IBM-PC를 위해 개발
- 단일 사용자용
- 단일 사용자용이었기 때문에 메모리 관리 능력 한계
- MS Window
- MS사의 다중 작업용 GUI 기반 운영 체제
- Plug and Play, 네트워크 환경 강화
- DOS용 응용 프로그램과 호환성 제공
- 불안정성
- 풍부한 지원 소프트웨어
유닉스와 Window는 시작점부터 달랐기 때문에 여러 차이점이 존재하게 되었다.
그 외
PalmOS, Pocket PC, Tiny OS
Android, IOS
안드로이드는 리눅스 커널 위에서 돌아가서 플랫폼이라고도 부른다
내가 운영체제라고 생각하고 수업을 듣자
구조
- I/O 장치들에는 디바이스 컨트 롤라는 작은 CPU들이 있다.
- CPU는 연산하는 기능이 있고, 연산을 하기 위해서 필요한 작업 공간이 메모리
- 디바이스 컨트롤러도 로컬 버퍼라는 공간이 있다.
Mode bit
CPU를 운영체제에서 사용할 때는 믿고 맡길 수 있지만, 사용자 프로그램은 악의적인 동작들이 있을 수도 있기 때문에 그걸 구분하는 것
운영체제가 사용 중일 때는 0 사용자 프로그램이 사용중일때는 1
Mode bit이 1이면 위험한 기계어(특권 명령)는 차단
특권 명령을 사용자 프로그램이 사용하려고 하면 운영체제로 다시 CPU가 넘어감
interrupt/Exception
- Exception는 예외 상황
- interrupt는 인터럽트 라인에 들어온 요청을 확인해서 요청이 있으면 운영체제가 CPU를 점유
- Timer
- 운영체제가 CPU를 뺏어올 수 없기 때문에 시간을 저장해놓는 부분
- CPU의 독점 방지
- 시간이 다되면 타이머 인터럽트 발생
- 시스템 콜
- I/O 장치를 사용하는 명령은 특권 명령이라서 운영체제에 I/O 장치를 사용해달라고 요청하는 것
- 요청을 하고 싶은 프로그램이 스스로 인터럽트를 걸어서 운영체제로 CPU이용권을 넘김
- 소프트웨어 인터럽트, 트랩이라고도 함 (업무의 연장이기 때문에)
- 디바이스 컨트롤러
- I/O 장치에 요청이 오면 받고, 작업이 끝나면 인터럽트를 거는 작은 CPU
- 펌 웨어
- I/O장치들의 동작을 기계어로 입력되어 있는 프로그램
- 인터럽트 벡터
- 해당 인터럽트의 처리 루틴 주소를 가지고 있음
- 인터럽트 처리 루틴
- 해당 인터럽트를 처리하는 커널 함수
- CPU
- register
- 연산을 저장하는 작은 부분
- 프로그램 카운트
- 다음에 실행할 메모리의 주소를 가지고 있음
- 인터럽트가 들어오면 운영체제 위치로 변경(Mode bit이 0으로 변경)
- register
동기식 입출력과 비동기식 입출력
- 동기식 입출력 (synchronous I/O)
- I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
- 비동기식 입출력 (asynchronous I/O)
- I/O 결과를 모르는 상태에서 다른 작업을 진행
DMA (Direct Memory Access)
빠른 입출력 장치들은 잦은 인터럽트를 유발해서 오버헤드를 발생시킬 수 있기 때문에 I/O 작업이 끝난 후 디바이스 버퍼에 있는 데이터들을 메모리에 올려놓고 인터럽트를 걸어준다
저장 장치 계층 구조
캐싱을 사용

'CS📟' 카테고리의 다른 글
[CS] 운영체제 - CPU 스케줄링 (0) 2022.11.03 [CS 스터디] OS - Process (0) 2022.10.22 [CS 스터디] 운영체제 개요 (1) 2022.10.07 [TCP/IP] CH 6 보안 (2) 2022.09.17 [TCP/IP] 네트워크 인터페이스 계층 (0) 2022.09.04