728x90
복습하기 위해 학부 수업 내용을 필기한 내용입니다.
해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.
▶운영체제(OS)란?
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층을 말한다.
- 좁은 의미의 운영체제 : 운영체제의 핵심 부분으로 메모리에 상주하는 부분, 흔히 커널(kernel)이라고 부른다.
- 넓은 의미의 운영체제 : 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함하는 개념이다. 항상 메모리에 올려져 있는 것이 아닌 필요할 때 올라가는 별도의 프로그램이다.
▶Three Main Features of Operating Systems
1. Virtualization
CPU Virtualization
실제로 하나의 process에서 마치 process가 무한히 있는 것처럼 느껴지는 착각을 느낄 수 있다.
- 한꺼번에 많은 프로그램(또는 많은 사용자)을 실행
- 정책(ex, 스케줄링) 그리고 리소스 관리
example : 한꺼번에 여러 프로그램을 실행(단일 CPU) 사용
Memory Virtualization
각각의 process가 자신의 고유한 가상 메모리 공간을 가지고 있다는 착각을 느낄 수 있다.
- physical memory는 바이트의 배열
- 일반 computing system에서 physical memory는 DRAM이고, 용량에 제한이 있다.
- 프로그램은 모든 데이터 구조를 메모리에 저장
- Read memory (load) : 데이터에 접근할 수 있는 주소를 지정
- Write memory (stroe) : 주어진 주소에 쓸 데이터를 지정
- OS는 주소 공간을 physical memory에 매핑한다.
- protection : 실행 중인 프로그램 내의 메모리 참조는 다른 process 주소 공간에 영향을 주지 않는다.
- caching : physical memory는 OS에 의해서 관리되는 공유 리소스다.
2. Concurrency
공유 리소스의 동시 접근은 미묘하고 에러가 발생하기 쉽다.
- OS는 한 번에 많은 것을 저글링하고 있는데, 처음에 프로세스 하나를 실행한 다음 다른 프로세스를 실행하는 것이다.
- 현대의 멀티 스레드 프로그램도 동시성 문제를 나타낸다.
- 보호, 잠금 또는 기타 동기화 방법 필요
Loop는 두 작업자 각각이 Loop에서 공유 카운터를 증가시키는 횟수를 결정합니다.
Why is this happening?
- 공유 카운터를 증가 → 세 가지 지침
- 메모리에서 register로 counter 값을 Load
- counter 증가
- 메모리에 다시 저장
- 이 세 가지 명령은 'atomically'하게 실행되지 않는다.
- 동시성(concurrency) 문제가 발생!!!
3. Persistence
Example : journaling file system (JFS)
- 특별한 데이터 구조체 혹은 데이터 영역에 시스템의 변경사항들을 기록
- 이를 참조해 파일 시스템에 변경 사항을 적용하기 전 변경점들을 추적
- 이를 통해 저널링 파일 시스템은 정상 상태로 빠르게 복구, 내부 데이터 손상 가능성을 줄인다.
- Journaling : storage에 데이터 변경 내역을 저장하는 활동
Source : https://www.howtogeek.com/howto/33552/htg-explains-which-linux-file-system-should-you-choose,/
Example : Copy-on-Write
- 말 그대로 작성 시 이전의 내용을 copy 한다는 뜻
- Linux에서 자식 process를 fork 하면 같은 메모리 공간을 공유
- 부모 process가 데이터를 새로 넣거나, 수정, 삭제하게 되면 같은 메모리 공간을 공유 X
- 부모 process 해당 페이지를 복사한 다음 수정하는 작업
다음은 Computer System에 대해서 블로그를 작성해 보도록 하겠습니다.
복습하는 과정이지만 많은 분들에게 도움이 되었으면 좋겠습니다.
728x90
'컴퓨터공학 > 운영체제' 카테고리의 다른 글
[운영체제/OS] Introduction to Computing System (0) | 2022.06.20 |
---|