2020. 12. 20. 23:54ㆍ코딩/프로그래밍 기타
- 이 시리즈의 글은 "운영체제와 정보기술의 원리 - 반효경"이란 책을 읽으며 책 내용에 관련하여 필기한 내용입니다 -
본 내용은 운영체제를 간단하게 설명하는 위 책을 또한번 정리하는 것이므로 중요한 내용의 누락이 있을 수 있습니다. 다시 공부하는 경우 책을 다시 읽는 것을 추천합니다.
1일차 (1~3장)
서문
컴퓨터 분야의 지식은 매우 빠르게 생산되고 변해가지만, 컴퓨터 분야의 기본 원리 및 정보기술 분야가 추구하는 핵심 철학은 시대가 지나도 변하지 않는다
컴퓨터분야의 학문은 컴퓨터 자체를 효율적으로 운영하기 위한 학문, 그리고 복잡한 문제를 컴퓨터를 활용해서 효율적으로 풀 수 있는 방법을 제공하기 위한 학문으로 나뉜다.
1장 - 컴퓨터 및 정보기술의 역사
컴퓨터의 이론적 발견과 하드웨어의 역사를 다루고 있다.
역사적인 내용이 대부분이기 때문에 즐기며 읽으며 넘어가자.
2장 - 윤영체제 개요
운영체제란 하드웨어 바로 윗단에 설치되는 소프트웨어를 말한다
운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라가면 낭비이므로 일부분만 메모리에 상주하며 사용된다.
메모리에 상주하는 부분을 커널(kernel)이라 부르며 이를 좁은 의미의 운영체제라 부른다.
운영체제의 역할
1. 하드웨어를 위한 역할
- 사용자가 직접 다루기 힘든 각종 하드웨어를 관리
2. 사용자를 위한 역할
- 편리한 인터페이스를 제공
자원관리자
시스템 보호
동지작업을 지원하는지 여부에 따른 분류
단일작업용 운영체제
다중작업용 운영체제(일반적으로 대부분의 컴퓨터)
- 시분할 시스템
다중사용 지원여부에 따른 분류
단일사용자용
다중사용자용
처리방식에 따른 분류
일괄처리
시분할처리
실시간운영체제
대표적os
윈도우
유닉스 - 리눅스
운영체제의 기능
CPU 스케쥴링
선입선출(FCFS) - 말그대로 선입선출
라운드 로빈 - cpu를 할당받아 사용할 수 있는 시간이 고정. 초과시 큐의 맨뒤로 재배치
우선순위 - 우선순위를 할당하여 처리
메모리 관리
고정분할방식 - 정해진 크기로 분할 (외부조각, 내부조각 발생)
가변분할방식 - 프로그램의 크기대로 분할 (외부조각 발생)
가상메모리방식 - 현대컴퓨터 대부분. 크기에 상관없이 개별적인 가상메모리공간 보유. 스왑영역 사용. 페이징
주변장치
CPU가 필요할 경우 인터럽트 발생
주변장치가 개별적으로 가진 컨트롤러가 인터럽트 발생시켜 보고
3장 - 컴퓨터 시스템의 동작 원리
인터럽트
인터럽트 발생시 하던일을 잠시 멈추거 인터럽트 코드 수행
하드웨어 인터럽트 - 컨트롤러 등 하드웨어장치가 cpu의 인터럽트 라인 세팅. 일반적 인터럽트
소프트웨어 인터럽트 - 소프트웨어가 cpu인터럽트 라인 세팅 , 트랩이라고 불림, 시스템콜/예외사항
동기식 입출력
- 입출력 작업이 완료된 후에 다음 명령 수행 (해당 프로그램만 block하고 다른 프로그램으로 이양)
- 다른 프로그램에서 같은 메모리에 접근할 수 있기 때문에 장치별로 큐 존재
비동기식 입출력
- 바로 원래 프로그램에 cpu이양 (데이터와 관련없는 작업 수행)
DMA
빈번한 인터럽트는 cpu의 효율적 운용성 저하 -> DMAC를 통한 block단위로 모아서 인터럽트 콜
저장장치의 계층구조
빠르고 용량이 작은것 -> 느리고 용량이 큰 것
캐싱 기법 - 상대적으로 용량이 적은 빠른 저장장치를 이용해 느린 저장장치의 성능을 향상시키는 총체적 기법
- 시간적 지역성 / 공간적 지역성
하드웨어 보안
커널모드 / 사용자모드 - 모드비트로 하드웨어적으로 모니터링
메모리 보안
프로그램이 메모리의 한영역에 모여있는 단순한 경우 - 기준레지스터 한계레지스터
메모리의 여러영역에 나뉘어 배치 (페이징) - 더 현실적인 메모리 관리법 필요
CPU 보안
한 프로그램이 의도적으로 cpu를 장시간 점유할 가능성 존재
타이머라는 하드웨어를 통해 일정 시간이 지나면 인터럽트 발생 -> cpu를 os에 이양
시스템 콜을 통한 입출력 수행
디스크에 파일을 쓰거나 읽어오거나 키보드 입력, 출력 등 모두 특권명령인 입출력에 해당
프로그램이 직접수행 불가능 -> 시스템콜을 통해 대행
'코딩 > 프로그래밍 기타' 카테고리의 다른 글
[WPF] 윈도우 프로그래밍을 이틀차 감상 (0) | 2021.01.10 |
---|---|
백준 코딩 테스트 1181 - 파이썬 프로그래밍 (0) | 2020.12.09 |
파이썬 팁 for 코딩 테스트 -1 (0) | 2020.12.06 |
백준 코딩 테스트 2438 - 파이썬 프로그래밍 (0) | 2020.12.04 |
선언형 프로그래밍 vs 명령형 프로그래밍 (0) | 2020.10.17 |