Open ChoiGunHee opened 6 years ago
[x] Q1. p343 컨디션 변수를 사용해서 시그널을 기다리고 받는 과정은 실제로 컴퓨터 내부에서 어떻게 작용하나요? 예를들어, 공유 변수를 사용하면 while loop를 돌면서 메모리 혹은 캐시에 데이터 값이 변경됐는지를 확인하면서 느리다는 것을 알겠지만, 컨디션 변수는 어디에서 그 값을 확인해서 오는 것이기에 더 빠르다는 건지 궁금합니다.(락을 추가로 잡고 변경을 하는 것임에도 불구하고)
[x] Q2. p395 비동기 I/O (asynchronous I/O)에 대한 개념을 처음 접했는데, 프로그램이 I/O 요청을 하면 우선 허락 없이 권한을 가져올 수 있는 것이 맞나요? 만약 맞다면, 네트웍 혹은 일반적인 운영체제에서 너무도 쉽게 해킹을 할 수 있는 것이 아닌지 궁금합니다.(혹은 어떤 보안처리가 되었는지?)
[x] Q3. p398 이 질문은 건희이기 때문에 할 수 있는 질문 같아서 합니다. 흔히 안드로이드 프로그래밍을 할 때, 여러 데이터 처리를 하는 경우에 자주 쓰이는 것이 이벤트 핸들러 입니다. 허나, 이 책에서 이벤트 사용의 어려움이라는 내용을 보면 멀티코어 시스템에서의 어려움과 페이징 기법 등(리눅스 기반이기 때문에 페이징 기법을 사용한다 생각) 여러 문제점이 있습니다. 그렇다면, 여기서 말하는 이벤트 핸들러가 안드로이드 프로그래밍에서의 이벤트 핸들러와는 다른 방식인걸까요? 아니면 어려운 문제도 잘 해결한걸까요?
[x] Q1. p332 엉성한 카운터를 구현 설명 하는 부분에서 malloc관련 에러로 인한 코드 수정이 나왔습니다. 검색 루틴인 Lookup 부분에서 return0 부분은 대체하여 변수 설정과 break문으로 교체를 한다고 나와있었습니다. 그런데 Insert 부분에도 return 부분이 있었는데 반환형만 void로 바뀌고 return만 어정쩡하게 살아진 상태로 수정되어있는 모습이 있는데 Insert는 왜 이런형식으로 수정된건가요?
[x] Q2. 세마포어 세마포어가 여러개의 대기중인 프로세스를 깨우게 될때 조건은 무엇인가요?(ex 순서?) 또 대기중인 프로세스는 큐에 들어가 있나요?
[x] Q3. p385 프로세스 스케줄링이 진행될때 락 스케줄링은 어떤식으로 판단하게 되는건가요? 해당 자원에 대한 정보를 스케줄러가 관리하게 되나요?
[x] sleep 상태에서부터 signal을 받을 때 까지의 cpu의 행동?에 대해 알 수 있을까요?
[x] 비동기 I/O 요청시에 mac os X에서는 aio_error API를 활용하여 주기적으로 확인하여 I/O가 완료되었는지 확인하는데 다른 OS에서도 이러한 방식들로 구성되어있을까용?
[x] 계속 단일 CPU와 멀티 CPU와의 비교로 이루어지는데 현재 단일 CPU로 사용할 일들이 있을까요??
질문 늦게올려서 죄송합니다 다음부턴 제시간에잘올리겠습니당!
@heyheygo99 Q1 답변 : 일반 시그널과 동일하게 작동합니다. 더 빠르다는 내용보다는 CPU가 공회전을 안하기 때문에 더 효율적입니다.
Q2 답변 : 호출하는 프로세스에서 권한이 있다면 가져옵니다.
Q3 답변 : 안드로이드 핸들러는 이 책에서 말하는 걸 잘 구현한 인터페이스입니다. 다만, 프로세스간의 통신이기 때문에 책에서 말하는 CPU가 직접 사용하거나 하는건 아니라서 내부적으로는 스레드와 동일할 것으로 생각합니다.
@kwanghee0124 Q1 답변 : 보이드로 바꾼 이유는 굳이 할당에 실패했는지 안했는지 알려줄 필요가 없어서 입니다. 할당에 실패할 경우만 리턴하고 할당에 성공하면 락으로 인하여 무조건 삽입이 성공하기 때문입니다.
Q2 답변 : 따로 조건이 없습니다. 프로세스의 상태을 대기에서 준비로 바꾸면서 큐도 대기큐에서 준비큐로 바꿔주게 됩니다. 순서를 보장하지 않기 때문에 언제 실행될지 모릅니다.
Q3 답변 : 락 스케줄링은 따로 없고, 대기큐에서 준비큐로 바뀌게 되면 스케줄러가 관리합니다.
@SeungBu Q1 답변 : CPU는 다른 프로세스들을 처리하고 있습니다.
Q2 답변 : 리눅스는 poll()로 구현할 수 있고, 윈도우는 IOCP 방식으로 대처 합니다. 아래에 링크달았습니다. http://ozt88.tistory.com/23
Q3 답변 : 현재 단일 CPU만 사용하는 것은 찾기 힘듭니다. 왜냐면 단일 CPU에도 코어가 2코어 4코어 씩 들어가 있기 때문입니다. 내부적으로는 다중코어입니다. 단일 스레드를 사용하는 대표적인 프로그램은 Node.js입니다. 이벤트기반의 처리를 사용합니다.
스터디 자료 : Operating System Three Easy Pieces , xv6 Operating System 시간 : 01/17 ( PM 4:00 ~ PM 6:00 ) 장소 : 미디어센터 516 호
1. 스터디및 발표자료 작성
2. 현재 스터디 질문 제출
발표자 이외 인원은 01월 30 일까지 22장 ~ 31장 에 대하여 개인당 질문 3개를 만들어 issue 에 comment 로 제출
issue에 질문 comment 작성