ㅣ코딩테스트
문제
: 문자열의 인덱스가 주어졌을 때(처음, 끝), 두 인덱스 사이의 e가 몇 번 등장했는지 출력하라.
이번 주에 계속 나온 누적합과 비슷하다.
ㅣOS 특강(10:00 - 12:00)
장소 : 정심화 본부 세미나실
강사 : 충남대학교 김종익 교수님
시간 : 10:00 - 12:00
배운 내용은 아래와 같다.
세마포어 Semaphore
변수를 저장하는 시그널이다.
wait, signal -> 예전에는 P, V 연산이라고 불렀다.
다익스트라라는 분이 있었다.
세마포어도 다익스트라가 만들었다.
네덜란드 사람이다.
예전에는 wait, signal 의 네덜란드 약어를 사용했었다.(P, V)
세마포어는 정수 변수다.
- wait 값이 0보다 같거나 작을 때까지 기다려요
세마포어 값을 양수의 경우에만 감소시킨다.
- signal 은 세마포어 값을 하나 증가시킨다.
- 초기값이 3이라면, 문제없이 들어갈 수 있는 순서다.
코드 섹션에 진입할 수 있는 프로세스의 개수
- 바이너리 세마포어 = 뮤텍스
- 카운팅 세마포어 : 값을 지정
- 특정한 순서를 부여하고 싶을 경우 사용
- busy waiting : cpu를 계속 사용한다.
-> block, wake up
정수 변수 뿐만 아니라 세마포어에 대기하고 있는 프로세스들을 킵하는 리스트를 또 가지고 있다.
비지 웨이팅 하지 말고 그냥 리스트로 ㄱㄱ
- 일단 감소 -> 값 확인 -> 0 보다 작으면 들어간다.
- 세마포어의 값이 음수이면, 대기하는 애가 있다.
* Deadlock
- lock을 잡고 block 되었다.
- 깨어나서 놔 주기 전까지 ;lock을 잡고 있다.
- 서로서로 잡고 있다.
- 진행이 불가능하다. 무한정 기다리게 된다.
* Starvation
- 버스가 오면 한 번에 한 사람만 태운다.
- 경로우대라서 나이 많은 사람만 태운다.
- 꼬마가 기다리고 있다.
- 계속 나이 많은 사람이 온다.
- 꼬마는 계속 기다린다
- 굶어죽는다.
* Synchronization
다음의 예시는 기본적인 상식으로 알아두는 것이 좋다.
- bounded-buffer problem
- producer, consumer
- 무택스, full(0), empty(n)
- 하나의 컨슈머는 하나를 꺼내갈 수 있다.
- 단순하게 뮤택스로만 막혀 있으면 버퍼가 꽉 차 있으면 할 일이 없다. 나와야 한다.
- 채우지 않고 나오는 것은 낭비다.
- Readers, Writers
- 쓰기는 한놈만 해야 한다.
- 읽는 건 상관 없다.
- 처음 들어왔으면 읽기/쓰기를 독점해야 한다.
- 마지막 독자는 쓰기 권한을 줘야 한다.
- Dinning Philsophers
- 다섯 명의 철학자가 앉아 있다.
- 철학자는 포크 두 개로 먹어야 한다. 포크 점유
- 모든 철학자가 배고파서 오른쪽 포크를 쥐었다.
- 데드락, starvation 문제 다 생길 수 있다.
- Functional programming language
- 함수형 값을 업데이트 하지 않는다.
- 변수 값을 바꾸는 행위는 하지 않는다.
'2023 활동 - 4학년 > [1월 ~ 4월] sw 아카데미 백엔드 과정' 카테고리의 다른 글
[2023.02.13 / CNU SW 아카데미] 실리콘밸리에서 날아온 데이터베이스 Day 14 (0) | 2023.02.14 |
---|---|
[2023.02.13 / CNU SW 아카데미] OS 특강 4 (0) | 2023.02.13 |
[2023.02.08 / CNU SW 아카데미] 26일차 회고록 (0) | 2023.02.12 |
[2023.02.07 / CNU SW 아카데미] 25일차 회고록 (0) | 2023.02.12 |
[2023.02.06 / CNU SW 아카데미] 24일차 회고록 (0) | 2023.02.12 |