- 스터디 주제: 운영체제
- 총 인원 수: 4명
- 운영 기간: 23.04.20 ~ 23.05.18 ( 5주: 4주 발표 + 1주 모의 면접 )
- 모임 날짜: 매주 목요일 오후 7시 (2시간 ~ 3시간), 온라인
- 보증금: 3만원 (스터디 종료 후 벌금 제외한 보증금 모두 반환)
Wiki 페이지 참고
| 김유정 | 배서은 | 심수현 | 문정현 |
1️. 처리량 2️. 대기 시간 3️. 균형있는 자원 이용 4️. 오류 복구 시간
정답
**4️. 오류 복구 시간**
1️. 13:25 2️. 12:25 3️. 12:00 4️. 14:00
1️. 시간 할당량을 크게 하면 입출력 위주의 작업이나 긴급을 요하는 작업에 신속히 반응하지 못한다.
2️. 시간 할당량이 작으면 FCFS 스케줄링과 같아진다.
3️. 시분할 시스템(time sharing system)을 위해 고안된 방법이다.
4️. 시간 할당량이 작을수록 문맥 교환 및 오버헤드가 자주 발생한다.
정답
**2️. 시간 할당량이 작으면 FCFS 스케줄링과 같아진다.**- 시간 할당량(타임 슬라이스)가 커지면 FCFS 스케줄링과 같아지고, 작아지면 문맥교환이 자주 발생하여 오버헤드가 증가한다.
- 따라서 적절하게 시간 할당량을 정하는 것이 중요하지만 절대적으로 좋은 값을 찾는 것은 어렵다.
정답
Multiprogramming : batch processing, background processing과 같이 사용자에게 보여지지 않은 프로그램에 적합하다.
- timesharing보다 overhead가 적다
- 처리율(시간동안 처리되는 작업의 수)이 좋고 낭비되는 시간이 적다.
- 하지만 응답시간(프로그램 실행 명령 ~ 실제로 실행되는 시간)은 Timesharing에 비해 크다.
Timesharing : interactive processing, foreground processing과 같이 사용자에게 보여지는 프로그램에 적합하다
- Multiprograing보다 overhead가 크다
- 응답시간이 적다.
- 낭비되는 시간이 많아진다. (시간간격보다 처리시간이 짧아도 시간간격만큼 해당 프로그램이 CPU 제어권을 가지고 있기 때문)
정답
- CPU 스케줄러는 운영체제의 커널 내부에 위치합니다.
- 커널은 운영체제의 핵심 부분으로, 시스템 자원 관리, 입출력 처리, 파일 시스템 등 다양한 기능을 담당합니다.
- CPU 스케줄러는 이 중에서도 CPU 자원 관리를 담당하며, 프로세스 실행 우선순위에 따라 CPU 자원을 할당하는 역할을 수행합니다.
정답
- 자발적 문맥 교환 : 현재 사용 불가능한 자원을 요청했을 때 프로세스가 CPU 제어를 포기한 경우 발생
- 복귀 문맥 교환 : 인터렙트나 예외 상황이 발생하여 프로세스가 CPU를 반환한 후, 이전에 실행되던 프로세스로 돌아가기 위한 문맥 교환이며, 대개 운영체제의 커널 모드에서 실행된다.
- 비자발적 문맥 교환 : 타임 슬라이스가 만료되었거나 우선순위가 높은 프로세스에 의해 선점되는 경우와 같이 CPU를 빼앗겼을 때 발생한다.
정답
- Thread-safe(스레드 안전): 멀티 스레드 프로그래밍에서, 변수나 객체, 함수 등의 자원이 여러 스레드에 대해 동시에 접근되어도 정상적으로 프로그램이 동작하는 것
- Race Condition: 현재 작업이 제어할 수 없는 또 다른 작업과의 진행 순서, 즉, 타이밍에 따라 결과가 달라져 여러 결과를 만들어낼 수 있는 바람직하지 않은 상황, 두 개 이상의 스레드가 race condition에 들어가거나 같은 객체에 동시에 접근해도 연산결과의 정합성이 보장될 수 있게끔 메모리 가시성이 확보된 상태
- thread-safe하다고 해서 race condition으로부터 자유롭다는 뜻 X
- race condition의 발생에도 불구하고, 프로그래머가 의도한 결과가 나온다면 thread-safe한 코드라고 할 수 있음
- ex) 이 코드는 여러 스레드에 의해서 동시에 수행되어도 문제 없다! → thread safe한 코드
정답
- Reentrency 재진입성
- Thread-Local Storage 스레드 지역 저장소
- Atomic Operation 원자 연산
- Mutual Exclusion Locks 락
- Immutable Object 불변 객체
- Producer - Consumer Pattern
- Blocking Queue
- Volatile
- Instance Confinement 인스턴스 한정
- Thread Confinement 스레드 한정
- Condition Queues 조건 큐
- Synchronized Collections 동기화 컬렉션
- State Dependence 상태범위 제한
정답
- X
- 메서드 선언에 synchronized 한정자를 선언할지는 구현 이슈일 뿐 API에 속하지 않는다. 따라서 이것만으로는 그 메서드가 스레드 안전하다고 믿기 어렵다.
정답
* 페이지 테이블을 메모리에 두면 메모리에 있는 페이지 테이블을 보기 위해, 그리고 프레임에 접근하기 위해 두 번이나 메모리 접근이 필요하기 때문에 TLB 라는 캐시 메모리를 사용합니다.
- 1번 페이지는 수정된 적이 있습니다.
- 1번 페이지는 메모리에 적재되어 있지 않습니다.
- 2번 페이지는 읽기만 가능합니다.
- CPU에 의해 참조된 페이지가 없습니다.
정답
- 프로세스가 실행되는 도중에 필요한 페이지가 물리 메모리에 존재하지 않아 디스크에서 해당 페이지를 가져와야 하는 경우를 말합니다. 즉, 프로세스가 접근하려는 페이지가 물리적 메모리에 존재하지 않는 상태에서 발생하는 인터럽트입니다. 페이지 폴트가 발생하면 운영체제는 해당 페이지를 물리 메모리에 적재하여 프로세스가 접근할 수 있도록 해야 합니다.
- 이때, 메모리에 빈 공간이 있다면 페이지 폴트를 처리하기 위해 디스크에서 해당 페이지를 읽어와 물리 메모리에 적재합니다. 그러나 빈 공간이 없는 경우, 운영체제는 페이지 교체(Page Replacement) 알고리즘을 사용하여 더 이상 사용되지 않는 페이지를 디스크로 내보내고, 새로운 페이지를 메모리에 적재합니다.
정답
- i++이 3개의 instruction(READ-MODITY-WRITE)로 구성되어있기 때문입니다. 멀티 스레드 프로그래밍에서는 스레드 하나가 값을 읽어 i+1을 하기 직전에 다른 스레드가 i를 읽어 i+1을 수행하고 반영하는 동작을 수행한다면 후자의 연산은 무효가 되는 현상이 발생합니다.
정답
- volatile: 가시성 보장 / synchronized: 가시성, 원자성 보장 / Atomic: non-blocking, 가시성, 원자성 보장
정답
- 쓰레드 로컬은 메모리 누수의 주범이 됨으로 주의해서 사용해야 합니다. Thread pool 환경에서 ThreadLocal을 사용하는 경우 변수에 보관된 데이터 사용이 끝나면 반드시 해당 데이터를 삭제해야 하고 그렇지 않을 경우 재사용 되는 쓰레드가 올바르지 않은 데이터를 참조할 수도 있습니다.
- 대역폭을 2배 넓힌 SDRAM:
- 시간이 지나도 저장된 데이터가 사라지지 않는 RAM:
- 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화해야 하는 RAM:
- 클럭과 동기화된 DRAM:
- 주로 캐시 메모리로 활용:
- 주로 주기억장치로 활용:
- 대용량화하기 유리:
- 집적도가 상대적으로 낮음:
정답
- 대역폭을 2배 넓힌 SDRAM: DDR SDRAM
- 시간이 지나도 저장된 데이터가 사라지지 않는 RAM: SRAM
- 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화해야 하는 RAM: DRAM
- 클럭과 동기화된 DRAM: SDRAM
- 주로 캐시 메모리로 활용: SRAM
- 주로 주기억장치로 활용: DRAM
- 대용량화하기 유리: DRAM
- 집적도가 상대적으로 낮음: SRAM
정답
- CPU가 메모리에 접근하는 시간이 CPU의 연산 속도보다 느리기 때문에 이러한 병목 지점의 처리 시간 차이를 메우기 위해 사용
1️. 1:1 model 2️. 1:M model 3️. N:M model 4️. 3-level model
정답
**4️. 3-level model**정답
** Light Weight Process(LWP)**- 다대다 모델이나 two-level 모델에서 프로세스에 할당된 적절한 수의 커널 스레드를 유지하기 위해서 커널과 유저 레벨 스레드의 매니저와 통신할 수 있는 방법이 필요하다. 이 때 커널 스레 드와 유저 스레드의 징검다리 역할을 하는 계층이다.
- 해당 계층이 없는 모델에서 “Light Weight Process”는 일반적으로 커널 스레드를 의미하고, “Thread”는 유저 스레드를 의미한다.
1️. 프로세스 2️. 스레드 3️. 커널 레벨 스레드 4️. 모두 가능
정답
**4️. 모두 가능**정답
원자성과 가시성
정답
대기 스레드로 인한 성능저하, 데드락 / 싱크로나이즈드 블록 내에서 참조객체를 수정하는 것, 메소드전체가 아닌, 객체레벌로 지정한다.
정답
1. 논블로킹 방식 2. CAS알고리즘과 volatile키워드


