월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨그림으로 쉽게 배우는 운영체제
io 명령의 개념
1)cpu는 연산작업을 하고 이에 해당하는 명령이 (논리 연산 or, and, xor 산술 연산 add)있는 것으로 알고 있는데 io작업을 위한 명령이 따로 있을까요? 2) 또다른 질문은 프로세스가 cpu를 점유해 연산작업을 하는 동시에 io작업은 병행으로 하는 건가요? 아니면 io작업도 cpu가 계속 필요하나요 두질문 모두 cpu가 io작업에 어떤 역할을 하는지 개념이 안서서 여쭙는 건데 도움부탁드릴께요~ 그리고 강의 넘 좋은 것 같습니다. 알고리즘 컴구조 같은 내용도 꼭 기회되면 만들어주세요
- 해결됨그림으로 쉽게 배우는 운영체제
프로세스와 알고리즘 등 관련...
안녕하세요 강의 관련 궁금한 점들이 있습니다... 1.프로세스들의 우선순위는 어떤 방식으로 정해지는 것인가요? 2. 운영체제가 ‘준비상태의 다중큐’를 참조해 그 안에 들어있는 프로세스들 중 적당한 프로세스를 선택해 실행상태로 전환시킨다고 들었는데 적당한 프로세스를 고르는 기준은 정확히 어떻게 되는지, 우선순위가 영향을 주는지 궁금합니다. 3. CPU 스케줄러와 운영체제는 완벽한 동의어인가요? 4. FIFO 알고리즘의 단점 중, I/O 작업이 있을 경우 CPU는 I/O 작업이 끝날 때까지 쉬고 있기 때문에 CPU 사용률이 떨어지는 것이 있다고 들었습니다. 그런데 대기상태의 경우, 특정 프로세스가 입출력 요청을 하면 입출력이 완료될 때까지 CPU를 기다리게 하는 건 굉장히 비효율적이라 입출력 요청을 한 프로세스를 대기상태로 두고 다른 프로세스에게 CPU를 할당한다고 들었는데 FIFO의 경우에는 1개 프로세스의 완전 종료 전까지 다른 프로세스들이 실행될 수 없어서 그런 것인가요? 그렇다면 FIFO 알고리즘의 경우에는 대기 상태가 존재하지 않는 것인가요? 5. 대기 상태의 경우 입출력 작업이 완료되면 대기상태에 있던 프로세스에게 CPU 할당 기회를 준다고 들었는데 기회를 준다는 것은 반드시 실행상태로 즉시 전환되는 것은 아니라는 의미인가요?
- 해결됨그림으로 쉽게 배우는 운영체제
질문드립니다.
PCB는 프로그램이 메모리에 올라올 떄 생성되는것으로 알고있습니다. 시스템 프로그래밍 책을 보면 Windows와 같은 운영체제는(대부분의 운영체제?) 선점형 OS이고 시분할 방식의 처리를 위해 각 프로세스의 상태를 지닌다고 하는데, 해당 책에서는 프로세스가 상태를 지니는게 아닌 스레드가 상태(준비,실행,대기등)를 지닌다고 하는데 여기서 궁금한점이 있습니다. 멀티스레드 환경에서도 여러 스레드끼리 컨텍스트 스위칭이 발생할텐데 그 스레드들의 상태는 PCB에 어떻게 저장이 되는형식일까요? 스레드가 2개가 실행상태에 있다가 I/O로 인한 대기상태로 빠진다던지 주어진 타임슬라이스를 다 사용해 컨텍스트 스위칭이 동시에 일어났다면 두 쓰레드의 정보를 저장해야 할텐데 하나의 PCB에서 이를 모두 관리한다는게 잘 와닿지가 않습니다. 해당 강의에서도 PCB에서는 프로세스 상태를 저장한다고 하니 많이 헷갈리네요ㅠㅠ
- 해결됨그림으로 쉽게 배우는 운영체제
강의 관련...
안녕하세요 강의 듣다가 궁금한 점이 생겼습니다! 1. 프로그램이 메모리에 올라가 0번 프로세스가 되고, 그 0번 프로세스들이 복사된다면 프로그램 1개당 0번 프로세스가 1개 + 복사된 프로세스들은 여러 개가 되는 것인가요? 2. fork()함수는 자식 프로세스는 0, 부모 프로세스에게 0이 아닌 값을 반환한다고 하는데, 그럼 2가지 기능이 아니라 if-else if -else 처럼 여러 가지 기능을 구현하고 싶은 경우에는 어떤 방법을 사용해야 하나요? 자식 프로세스의 반환값은 0 하나뿐이라.... 3. 좀비 프로세스는 exit status를 읽지 못해 메모리에 계속 살아있는 상태라고 하셨는데 그럼 정상적인 exit status 값(0)이 아닌 비정상적인 exit status 값을 읽은 경우에도 좀비 프로세스가 되는 것인가요? p.s. cpu가 내리는 입출력 명령(키보드 키 입력, 프린트 문서 출력 등...)은 정확히 어떤 의미인가요? 키보드 키 입력을 예시로 한다면 입출력 명령은 '키보드 키 입력이 들어오면 요청 신호 줘'이고 입출력 완료는 '키보드 키 입력이 들어온 것'을 말하는 것인가요? 그리고 인터럽트는 cpu가 인터럽트 요청 신호를 받은 뒤에 cpu가 만드는 것인가요?
- 해결됨그림으로 쉽게 배우는 운영체제
면접
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 오늘 결제하고 목록을 쭉 보고 있습니다. 한가지 걱정(고민)이 있어서 글을 남기게 되었습니다. 저는 우선 유망스타트업이나 대기업만 목표로 대비를 하고 있습니다. 혹시 여기서 다루는 운영체제로 제가 목표로 하는 기업 cs전공면접 중 운영체제는 전부 커버가 가능할까요? 만약 부족하다,,,, 싶다고 생각하시면 여기서 제가 더 채워 넣어야할 부분을 조언 주시면 정말 감사하겠습니다.
- 해결됨그림으로 쉽게 배우는 운영체제
자원할당
교착상태 등등에서 나오는 자원할당문제에서 자원이라는 것은 메모리를 말하는걸까요 1 Cpu 2 메모리 3 저장 4 입출력장치를 모두 말하는걸까요 (혹은 cpu는 해당 없나요?)
- 해결됨그림으로 쉽게 배우는 운영체제
고정 분할 방식(페이징) 관련 질문입니다!
고정 분할 방식(페이징)을 설명하실 때 20mb로 분할했는데 어째서 15mb인 프로세스D를 할당하고 남은 공간이 5mb가 아니라 1mb인 건가요?
- 해결됨그림으로 쉽게 배우는 운영체제
무거운 교착상태 검출에 관한 질문입니다.
무거운 교착상태 검출에 관한 질문입니다. 자원 할당 그래프의 방향이 순환구조라면 교착상태가 생겼다고 판단한다고 하셨는데, 이게 교착상태의 조건 중 '원형 대기'에 해당하는 것 같습니다. 그렇다면 무거운 교착상태 검출은 나머지 조건인 '상호배제'와 '비선점', '점유와 대기'는 충족한 상태에서 '원형 대기' 조건을 충족했는지 검사하는 방식인가요?
- 해결됨그림으로 쉽게 배우는 운영체제
FIFO 알고리즘에 대한 질문입니다.
예전 강의에서 여러 프로세스를 동시에 실행하는 것처럼 보이게 하려고 운영체제의 스케줄러가 시분할 처리를 이용해 멀티 프로세싱을 구현한다고 배웠는데, FIFO 알고리즘을 사용하면 한 번에 한 가지 프로세스만 처리하니까 멀티 프로세싱이 아닌 건가요? 멀티 프로세싱이 아니라면 애초에 스케줄링과 시분할 처리의 의미가 없을 텐데 헷갈립니다ㅠ 또한 I/O 요청이 들어오면 CPU가 쉰다고 하셨는데, 위의 질문과 마찬가지로 애초에 스케줄링을 하는 이유가 I/O 요청이 들어와도 CPU가 쉬지 않게 하려는 거잖아요? 제가 어떤 부분을 잘못 알고 있는 걸까요?
- 해결됨그림으로 쉽게 배우는 운영체제
인터럽트 질문 있습니다.
인터럽트에는 하드웨어 인터럽트와 소프트웨어 인터럽트가 있다고 하셨습니다. 하드웨어 인터럽트는 입출력과 관련된 인터럽트가 있고 소프트웨어 인터럽트는 사용자 프로그램에서 발생한 인터럽트가 있다고 하셨습니다. 예를 들면 유효하지 않은 메모리에 접근하거나 0으로 나누는 명령등이 있다고 하셨는데 예를 들면 파이썬에서 다음과 같은 코드는 NameError와 TypeError를 일으킵니다. print(a) # 정의되지 않은 변수 print(1 + '1') # 자료형이 일치하지 않음 또한 0으로 나누는 명령도 ZeroDivisionError을 일으킵니다. 이 처럼 프로그래밍 언어에서 일으키는 에러도 인터럽트라고 본다면, 1. 소프트웨어 인터럽트는 소프트웨어에서 발생하는 에러를 처리하는 작동이라고 보면 될까요? 2. 에러를 처리하는 인터럽트 이외에 소프트웨어 인터럽트는 어떠한 역할을 할수 있나요?
- 해결됨그림으로 쉽게 배우는 운영체제
프로세스에 대해서 질문있습니다.
프로세스 뜻이 하드디스크에 내장되어 있는 프로그램이 메모리에 올려지면서 실행되고 있는 프로그램이라고 알고 있었는데 프로세스의 상태(생성, 준비, 실행, 대기, 종료)에 대해 알면서 프로세스가 계속 실행중인 것은 아니라 여러가지 상태가 있다는 것을 알았습니다. 그 중에서 프로세스가 실행 상태가 되려면 CPU스케줄러에 의해서 CPU를 할당을 받아야만이 실행을 하게 되더라구요. 그렇다면 이 프로세스의 상태가 실행 상태를 제외한다면 프로세스의 정의가 살짝 어긋나는것이 아닐까요?
- 해결됨그림으로 쉽게 배우는 운영체제
RAM과 ROM 질문있습니다.
1. RAM은 주기억장치 혹은 메인메모리 (프로그램이 실행될 때 사용되는 메모리), ROM은 보조기억장치 혹은 하드디스크 (프로그램이 저장되어 있는 물리적으로 사용되는 메모리)로 이해를 하면 될까요? 2. 만약 1번이 맞다면 감자님께서 ROM은 데이터를 한번쓰면 수정이 불가능하다고 하셨고 부팅과 관련된 BIOS정보를 저장하는데 주로 쓰인다고 하셨습니다. 그런데 프로그램이 사용하다보면 수정이 되는거 역시 불가피한 사실인데 1번의 내용이 틀린건가요? 3. 1번이 틀리다면 RAM과 ROM을 어떻게 이해하면 될까요?
- 해결됨그림으로 쉽게 배우는 운영체제
쓰레드 질문있습니다.
안녕하세요. 이번에 새로 운영체제 강의를 듣게 된 사람입니다. 프로세스와 쓰레드 챕터에서 쓰레드 강의 내에서 0:45초 에서는 웹 브라우저(정확히는 chrome.exe)를 실행 할때 마다 프로세스 하나가 생성된다고 하셨습니다. 그리고 1:33초 이후에는 쓰레드의 관해서 설명해주시고 2:32초 에서는 다시 웹 브라우저를 예로 설명해주셨는데 웹 브라우저가 하나 실행될 때마다 프로세스 내의 쓰레드가 하나씩 생성된다고 하셨습니다. 이 예시는 단순히 프로세스와 쓰레드의 개념을 구분해주시기 위해서 이렇게 설명해주신건가요?? 둘의 개념은 이해가 되지만 실제로 어떤 때는 웹 브라우저를 실행할 때마다 프로세스가 추가되고 어떤 때는 쓰레드가 추가되고 그런 경우는 없나요??
- 해결됨그림으로 쉽게 배우는 운영체제
컨텍스트 스위칭 관련...
안녕하세요 컨텍스트 스위칭 관련해서 궁금한 것들이 있습니다 1. 프로그램 카운터 레지스터도 레지스터의 종류 중 1개인데 PCB의 구조에서나, 컨텍스트 스위칭이 일어날 때 변경되는 값들에서 따로 분리되어 언급되는 이유가 있을까요? 2. 프로그램 카운터가 컨텍스트 스위칭으로 변경될 때 바뀐다는 것은 프로그램 카운터에 저장된 다음 실행할 명령어의 주소가 프로세스 실행 중에는 갱신이 안된다는 의미인가요? 3. PCB를 참조해서 이전 프로세스의 상태로 CPU의 레지스터 값을 설정할 때 레지스터 값만 언급하신 것은 PCB 구조 중 CPU에 있는 것이 레지스터 뿐이라서 인가요? 만약 그렇다면 이 경우에 레지스터 값에는 프로그램 카운터 레지스터도 포함이 되는지, 그리고 다른 구조 값들은 어디에서 새로 설정되는지 궁금합니다!
- 해결됨그림으로 쉽게 배우는 운영체제
컨텍스트 스위칭 질문입니다.
안녕하세요. 임베디드 리눅스 환경에서 C언어로 , 주로 네트워크 통신 프로그램 개발하고 있습니다. 개발하는 응용프로그램에서 내부적으로 8개의 스레드가 돌고 있습니다. 1. 스레드간 컨텍스트 스위칭에서도 강의에서 말씀하신 MLFQ 기법이 적용이 되는지요? 2. 컨텍스트 스위칭이 발생하는 지점을 어느정도 예측이 가능한지요? 코드상으로요 Ex ) write(), sleep() 함수를 만났을때... 3. 컨텍스트 스위칭하는데 걸리는 시간(오버헤드) 계산이 가능한가요? sleep(1ms) 주기로 복수의 스레드를 돌렸을 때 스레드의 반복주기를 printf로 찍으면 통상 2ms 간격으로 나옵니다. 그럼 컨텍스트 스위칭 시작부터 완료되기까지 시간이 1ms 걸린다는 건지... 4. 8개 스레드의 우선순위(가중치)를 사용자 임의로 조작하는 방법이 있을까요? 5. 스레드도 프로세스와 마찬가지로 PCB로 관리가 되는지요? 6. 메모리 영역 할당할 때 스택과 힙 영역의 크기는 어떻게 결정이 되는지요? 컴파일 단계에서 어느정도 예측이 가능하니 이에 따라 결정이 되는지요? 그리고 힙은 malloc 함수의 리턴값으로 오버플로를 알수 있는데 스택의 경우에는 오버플로 되면 어떻게 조치되나요?
- 해결됨그림으로 쉽게 배우는 운영체제
PCB 및 프로세스 상태에서
안녕하세요 좋은 강의 잘 듣고 있습니다!다름이 아니오라, PCB 강의에서 1. PCB들은 연결리스트라는 자료구조로 저장된다고 하셨는데 연결리스트로 연결되는 순서가 OS가 시분할시스템을 통해 돌아가면서 실행시키는 프로세스의 순서와 동일한 것인가요? 2. PCB의 구조 중 포인터 부분에서 부모와 자식 프로세스에 대한 포인터가 있다고 하셨는데 A->B->C의 예시에서, PCB B의 경우, 부모 프로세스는 A이고 자식 프로세스는 C가 되는 것인지, 그리고 할당된 자원에 대한 포인터의 경우 할당된 자원은 메모리가 맞는 것인가요? 프로세스의 상태 강의에서, 3. 현대 OS에서는 동시에 수많은 프로세스가 실행된다고 하셨고, CPU의 경우는 매우 빠른 속도로 프로세스를 순간마다 1개씩 처리한다고도 하셨는데 그렇다면 OS의 경우에는 여러 개의 CPU로 구성되어있기 때문에 시분할 시스템을 사용하더라도 동시에 여러 개의 프로세스를 실행한다고 말할 수 있는 것인가요? 4. 프로세스의 상태 중 생성 상태는 PCB를 생성하고 메모리에 프로그램 적재를 요청한 상태라고 하셨는데 프로세스의 정의는 '프로그램이 메모리에 올라가서 실행 중인 상태'인 것으로 알고 있습니다. 그런데 지금 생성 상태는, 아직 메모리에 프로그램이 올라가지도 않은 상태라 이 상태의 프로세스는 프로세스라고 부를 수 있는지, 프로세스의 정의에 적합하지 않은 것 같아 혼란스럽습니다... 감사합니다!
- 해결됨그림으로 쉽게 배우는 운영체제
과거 방식에서
안녕하세요 좋은 강의 잘 듣고 있습니다!다름이 아니라, 과거 방식에 대해서 설명해주실 때 메모리에 프로세스를 올려서 CPU로 처리를 하고 해당 프로세스를 다른 저장장치에 저장 및 다른 저장장치에 있던 프로세스를 메모리에 올려 CPU로 처리한다고 하셨는데 1. 프로세스를 하드디스크 같은 다른 저장장치에 저장할 때 프로그램 형태로 전환되는 과정 없이 프로세스 형태 그대로 저장되게 되는 것인가요? 2. 마지막 부분에서는 메모리에 있는 데이터를...이라고 말씀해주셨는데 이 데이터는 프로세스의 데이터가 맞는지, 맞다면 프로세스와 프로세스의 데이터 사이에는 어떤 차이점이 있는지 궁금합니다 감사합니다!
- 해결됨그림으로 쉽게 배우는 운영체제
강의자료
강의자료 없이도 충분히 이해할 수 있는 좋은 강의이지만개인적인 공간에 여러 자료들을 보면서 내용을 정리해가면서 공부를 하고 있는데요. 해당 강의 자료를 사용하면 정말 좋을 것 같은데자료를 공유해주실수는 없을까요ㅠ.ㅠ
- 해결됨그림으로 쉽게 배우는 운영체제
무거운 교착 상태 검출 8:07
가벼운 교착 상태 검출 설명에서는 강제 종료에 대한 말씀이 없으셨는데, 8:07에서 억울하게 종료되는 프로세스가 발생하지 않는 다는 설명에서 착오가 있는 것 같습니다. 무거운 교착 상태 검출이 강제 종료를 통해 해결하는 것으로 이해했는데 조금 더 자세한 설명 부탁드립니다 ! 그리고 교착 상태가 발생하면 "무거운 교착 상태"로 해결하는 것이 일반적인가요?? 아니면 둘 다 사용하나요..??
- 해결됨그림으로 쉽게 배우는 운영체제
안녕하세요.
안녕하세요. 유익한 강의 정말 잘 보고 있습니다. 다름이 아니라 본 강의 내용을 공개된 TIL 저장소에 정리해서 올리려고 하는데 괜찮을까요? 감사합니다.