묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결기출로 대비하는 개발자 전공면접 [CS 완전정복]
PCB PC register?
안녕하세요 질문이 있습니다. PCB는 process state, process number .. 등 프로세스에 대해 필요한 정보를 얻을 수 있는 자료구조라고 하셨는데 PC register과 어떤차이점이 있는지 모르겠습니다. PCB는 주로 커널에 저장되어있고 PC register는 스레드 마다 있는것이 맞나요?
-
해결됨기출로 대비하는 개발자 전공면접 [CS 완전정복]
Context switch에 대해 질문드립니다.
안녕하세요. 강의를 보다가 Context switch에 대해 의문이 들어 질문드립니다. 멀티 프로세스를 설명하는 강의에서 'Context switch가 한 프로세스에서 다른 프로세스로 제어권을 넘겨주는 것'이라고 설명해주셨는데요. 이후 멀티 쓰레드 강의에서 쓰레드 간에 CPU 할당이 전환될 때도 똑같이 Context switch가 일어난다고 말씀해주셨습니다. - 그러면 Context switch의 개념이 '프로세스 간의 전환'과 '쓰레드 간의 전환' 두 개의 개념이 있는걸로 보면 되는걸까요? - 만약 그렇다면, 프로세스 간에 Context switch가 일어날 때는 PCB에 기존 프로세스 정보를 저장하고, 이후 프로세스 정보를 불러오는 작업이 일어나는데, 쓰레드 전환에서는 하나의 프로세스 내에서 일어나기 때문에 PCB에 저장, 조회 하는 작업이 생략되는건지 궁금합니다. - 쓰레드가 프로세스 내에 개별적으로 Stack 영역을 할당 받고 이들 간에 교환된다고 하셨는데, 이들 사이에서는 어떤 방법으로 Context switch가 동작하는지 궁금합니다.(PCB와 동일하게 프로세스 마다 쓰레드 정보를 보관하는 곳이 있나요?)
-
미해결운영체제 공룡책 강의
18분 10초경 평균 웨이팅타임에 대해 질문드립니다!
SJF 스케줄링 평균 대기시간에 대해서 구하고 있는데요, 프린트에서는 7.75로 기재되어 있는데 제가 구한 값과 조금 달라서 질문드립니다 ㅠ 0 + (8-1) + (12-2) + (21-3) = 35 35 / 4 = 8.75 로 계산이 나오는데, 어떤 점이 잘못된건지 알려주실 수 있을까요?
-
해결됨그림으로 쉽게 배우는 운영체제
프로세스 생성과 종료 질문3
답변 감사합니다 여기서 답변을 보고 추가적으로 궁금한 점이 생겼습니다 "그럼 이렇게 init 프로세스를 복사해 터미널이나 그에 필요한 프로세스가 생성되는데 보통 사용자가 실행하는 프로그램은 서로 자식-부모 관계를 가지지 않기 때문에 걱정하시는 것처럼 LOL.exe 프로세스를 종료해도 웹브라우저가 종료하는 일은 발생하지 않습니다!" 라고 답변을 주셨는데요 그렇다면 사용자가 실행하는 프로그램들은 부모 프로세스 없이 독립적으로 프로세스가 생성되는 것인가요? 아니면 그려주신 트리 모양에 적힌 기본적인 프로세스(?)들이 부모 프로세스가 되어서 자식 프로세스로 생성되는 것인가요? 즉 유닉스 OS에서는 모든 프로세스들이 부모 - 자식간의 관계를 가지면서 프로세스들이 생성되는 것인지 궁금합니다 웹브라우저와 LOL.exe가 서로 부모-자식 관계가 아니더라도 그렇다면 컴퓨터 부팅이후 최초로 웹브라우저를 실행했다고 가정했을시 웹브라우저는 어떤 프로세스(기본 프로세스가 되었든 임의의 프로세스가 되었든)의 자식 프로세스로써 생성이 되는건지 아니면 사용자가 실행하는 프로그램이므로 독립적인 프로세스로 생성되는 것인지가 궁금합니다. 두번째 질문으로 앞으로 해주시는 운영체제 대한 설명은 전부 유닉스 OS에만 적용되는 설명인 것인가요 아니면 윈도우 OS나 유닉스 OS나 공통적인 것이지만 일부 차이점이 있는 경우가 있는 것인가요 세번째 질문, 윈도우의 경우 보내주신 링크에서 "독립적으로 실행 되는 새 프로세스를 만듭니다. 그러나 편의상 관계를 부모-자식 관계 라고 합니다." 라는 설명으로 보아 부모 프로세스가 먼저 종료되더라도 자식 프로세스가 좀비 프로세스가 될 것 같지 않은데(서로 독립적인 프로세스 이므로) 제 생각이 맞나요?
-
미해결운영체제 공룡책 강의
피터슨 알고리즘쪽질문드립니다 .
강의 너무너무 잘 듣고있습니다 감사합니다 저 강의를 듣다가 코드를 보는데 while문에서 조건이있고 {}가 없는데 따로 실행은 없는건가요 무조건 일단 깃발교체만 하고 sum++로 가는건가요 >? =============================================cpp 에서는 thread가 있길래 이렇게 구현했습니다 #include <iostream> #include <thread> #define true 1 #define false 0 using namespace std; int sum; bool flag[2]; int turn; void producer() { int k; for (int i = 0; i < 10000; i++) { //0번이 producer, 1번이 consumer라고 생각 /*endtry section*/ flag[0] = true; turn = 1; while (turn == 1 && flag[1]) ; sum++; /*exit section*/ flag[0] = false; } } void consumer() { int k; for (int i = 0; i < 10000; i++) { //0번이 producer, 1번이 consumer라고 생각 flag[1] = true; turn = 0; while (turn == 1 && flag[1]) ; sum--; /*exit section*/ flag[1] = false; } } int main() { sum = 0; thread t1, t2; t1 = thread(consumer); t2 = thread(producer); cout << "sum : " << sum << endl; t1.join(); t2.join(); return 0; }
-
미해결운영체제 공룡책 강의
안녕하세요! Ex 4.17 질문입니다.
안녕하세요 교수님! 강의 너무 잘 듣고 있습니다. Ex 4.17(14분 쯤)에서 질문이 있습니다. 강의 상 P1(자식1), P3(자식1의 자식 - 자식2)는 if 안에서 각각 unique 쓰레드를 생성해서 총 2개의 쓰레드가 생성되는 것까지는 이해가 됩니다. 마지막 fork를 통해 P1(자식1)과 P3(자식2)가 복제가 되는데, 이 과정에서 if내에서 추가된 쓰레드들은 복제가 되지 않나요? fork는 오로지 프로세스만 복제를 하게 되는건지 문의드립니다!
-
미해결운영체제 공룡책 강의
vsCode와 wsl 연동 시 에러 발생
vscode에서 원격 창 오픈 시 wsl 연결 실패로 에러가 납니다. 제 랩탑에 docker도 있어서 docker까지 running으로 바꿨는데 해결이 안됩니다. 에러문구는 VS Code Server for WSL closed unexpectedly. Check WSL terminal for more details. 인데 vscode 터미널창의 에러를 더 적자면, Unable to detect if server is already installed: Error: Coimmand failed: C:\WINDOWS\System32\wsl.exe -d docker-desktop-data -e sh -c "[ -d ~/.vscode-server/bin/3c4e3df9e89829dce27b7b5c24508306b151f30d ] && prinf found || ([ -f /etc/alpine-release ] && printf alpine-; uname -m)" 가 제일 먼저 뜨는 빨간 글씨입니다....