강의
로드맵
전체 1수강평
- 그림으로 쉽게 배우는 네트워크
- 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
게시글
질문&답변
각 메모리의 최대 요구 CPU 리소스는 어떻게 아나요?
최대 요구 자원과 Burst time은 비슷해보이지만 차이가 있습니다.Burst Time을 예측하는 것은 스케줄링을 위한 추정치인 반면 최대 요구 자원은 시스템의 안정성을 위한 상한선, 즉 약속과 같습니다.최대 요구 자원은 CPU(해당 프로세스는 최대 10번의 Burst Time, 각 Burst Time의 최대 Burst Time은 10ms)를 포함한 메모리(해당 프로세스가 사용할 최대 메모리 설정, ex: 4GB), I/O 장치등을 포함합니다. 운영체제는 이 정보를 바탕으로 자원을 할당하는 것이죠.프로세스의 코드와 데이터를 보면 최대 요구 자원을 확인할 수 있을 것 같지만 현실적으로 어려움이 있습니다.코드내 반목문, 조건문 같은 분기문과 I/O, 동적 메모리 할당이 있기 때문에 이를 모두 컴파일러가 정밀하게 계산하는 것은 어렵습니다.따라서 사용자가 명시적으로 알려주거나 운영체제가 보수적으로 설정해 데드락에 빠지지 않게 만들어 시스템의 안정성을 올려줍니다.BurstTime은 예측을 통해 스케줄링을 하며 성능의 감소, 상승이 있다면최대 요구 자원은 명시, 예측을 통해 시스템의 안정성을 책임집니다!
- 1
- 2
- 7
질문&답변
PCB들이 연결리스트로 저장되는 이유가 뭔가요?
안녕하세요 soap님!PCB들이 연결리스트에 저장된 이유가 궁금하셨군요.PCB들이 연결리스트에 저장되는 이유는 AI 인턴이 잘 설명해줬는데요.프로세스는 생성과 제거가 자주 일어나기 때문에 메모리에 동적인 할당이 필요합니다.만약 배열에 저장한다면 메모리 공간 낭비와 PCB 생성과 제거시 오버헤드가 있을 것입니다.반면 연결리스트에 저장되면 배열의 단점을 해결 할 수 있습니다. 하지만 연결리스트도 순차 탐색을 진행할 때는 O(n)이 걸린다는 단점이 있어서 일부 시스템에선 해시테이블이나 트리를 사용하기도 합니다. 일반적으론 연결리스트를 사용합니다.
- 1
- 2
- 18
질문&답변
해시 테이블에서 질문이 잇습니다.
안녕하세요 이지민님!해시 테이블 개념을 질문주셨는데 이해하신게 맞습니다.인덱스 데이터와 key-value는 다른 개념입니다.인덱스 데이터는 해시 테이블에 저장된 배열의 위치를 나타냅니다.인덱스는 key와 해시함수를 이용해 구해지고, 해당 인덱스에 key-value가 저장됩니다.일반적이지는 않지만 만약 해시함수가 없다면 key가 곧 인덱스일 수 있습니다. key가 9라면 9번 인덱스에 key-value를 저장하는 것이죠.이해하시고 직접 정리한 그림이 정확합니다.잘 이해하셨습니다 😀
- 1
- 2
- 9
질문&답변
IPC 방식 중 매개체가 파일과 메모리일 때 할당되는 용량의 차이
두 영상의 길이가 40분 길이라 저도 전부 시청하지 못했지만 영상을 보니 강사님께서 잘 설명해주시는 것 같습니다.AI 인턴의 답변과 같이 이는 메인 메모리(RAM)와 보조 메모리(영상에서 말하는 2차 메모리)의 특징을 그대로 가져옵니다.메인 메모리의 특징은 빠르지만 용량이 작은 것이고,보조 메모리의 특징은 느리지만 용량이 크다는 것입니다.따라서 보조 메모리를 활용하는 IPC의 경우 사용할 수 있는 용량이 크기 때문에 용량 할당 기준이 느슨한 것이고,메모리 기반 IPC는 용량이 적은 메인 메모리를 사용하기 때문에 용량 할당에 있어서 깐깐하게 할당합니다.통신 매체만 다르다고 생각할 수 있지만, 통신에서 사용하는 메모리 종류가 달라서 생기는 결과라고 이해하시면 될 것 같아요.(죄송하지 않으셔도 됩니다 😄😄)
- 0
- 2
- 14
질문&답변
고정 분할 방식에 질문입니다
영상에서는 페이지의 크기를 2MB로 나눈다고 가정했습니다.따라서 프로세스 A는 5MB이기 때문에 프로세스와 메모리가 2MB로 나뉘어 저장되었습니다.반면 프로세스 C는 1MB이기 때문에 2MB보다 크기가 작기 때문에 1MB가 낭비되는 상황을 설명하고 있습니다.프로세스 A, B, C 모두 페이징을 사용해 프로세스의 크기가 페이지 크기보다 클 때, 프로세스의 크기가 페이지와 같을 때, 프로세스의 크기가 페이지보다 작을 때 발생할 수 있는 상황을 보여주고있습니다!😊
- 0
- 2
- 35
질문&답변
세마포어에 관련해 질문입니다
안녕하세요 영욱님!세마포어에 대해서 궁금증이 있으시군요.세마포어를 사용해서 세마포어(s)를 1로 설정한 상태에서 별다른 설정 없이 여러 프로세스에서 어떤 프로세스가 먼저 실행될 지는 운영체제의 스케줄링 알고리즘에 따릅니다.운영체제 스케줄링의 높은 우선순위로 선택된 프로세스가 먼저 실행합니다. "그러면 프로그래머가 원하는 프로세스가 먼저 실행되도록 선택은 못하나요?"라는 질문이 나올 수 있을 것 같습니다.이 부분은 세마포어 연산을 이용해 원하는 프로세스가 먼저 실행되도록 할 수 있습니다.프로세스 A가 실행할 코드와 프로세스 B가 실행할 코드가 나눠져있고 프로세스 A가 먼저 실행되도록 하고 싶다는 상황으로 예를 들어보겠습니다.그렇다면 세마포어의 초기값을 아래와 같이 0으로 설정합니다.s = 0; // 세마포어 선언프로세스 A가 실행할 코드에는 아래와 같이 signal() 연산을 추가해줍니다.// 프로세스 A가 실행할 코드 프로세스 A 동작 . . . signal(s); // 세마포어 변수가 1이 됨.프로세스 A가 실행할 코드는 wait()함수가 없으므로 바로 실행할 수 있습니다. 반면 프로세스 B가 실행할 코드에는 wait() 함수를 추가해 프로세스 A의 동작이 끝나고 나서 시작되도록 컨트롤 합니다.// 프로세스 B가 실행할 코드 wait(s) // 세마포어 변수가 0이면 대기큐에서 기다리고, 1이상이면 바로 실행 프로세스 B 동작 . . . signal(s); // 세마포어 변수에 1을 더해(0+1 = 1) 1로 설정 만약 운영체제 CPU 스케줄링에 따라 프로세스 B가 실행할 코드가 먼저 실행했더라도 wait() 함수가 호출될 때는 세마포어 변수가 0이기 때문에 대기큐로 들어갑니다.결국 프로세스 A가 먼저 실행될 수 있습니다.
- 1
- 2
- 46
질문&답변
IPC 통신 중 파일을 이용한 방법이 정확히 어떤 건가요?
링크에서 정리된 IPC의 종류와 강의의 IPC의 종류가 조금 다릅니다.실제로는 IPC의 종류가 여러가지입니다.(공유 메모리, 파일, 파이프, 소켓, 메시지큐, 시그널,메모리맵...)주된 내용으로 파이프를 설명한 것이 맞습니다.다만 파일을 이용한 IPC 메커니즘도 있지만, 다른 IPC 방식보다 단점이 많아 잘 사용하지 않는 방식이라 정리되어있지 않나 싶습니다.공유메모리와 마찬가지로 파일로 통신을 할 때 변수와 파일이 공유자원이 됩니다.따라서 파일을 이용한 통신을 할 때도 동기화 이슈가 발생할 수 있습니다.파이프 메커니즘에서 사용하는 양방향 파이프는 일반적으로 단방향 파이프 두 개를 이용해 읽기/쓰기를 나눠져 동시에 접근하는 공유자원이 없기 때문에 동기화 이슈가 발생하지 않습니다.이후 나오는 동기화 이슈는 공유자원에 접근해 발생하는 상황을 다루고 있습니다.애초에 동기화 이슈가 공유자원에 동시에 접근해 발생하는 문제이기 때문이죠.동기화 이슈는 공유메모리, 파일, 소켓, RPC 모두 동기화 이슈가 발생할 수 있습니다.특정 IPC라기 보다는 공유자원의 존재 유무로 동기화 이슈가 발생할 수 있는지 생각하시면 혼란이 적으실 것 같습니다.
- 0
- 1
- 34
질문&답변
시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?
아래 AI인턴의 답변대로 빅오 표기법은 입력의 크기가 커질 때 성능을 확인하는 용도로 사용됩니다.이를 위해 상수를 제거해 알고리즘을 더 간단하고 일반화된 형태로 표현할 수 있습니다.다만 수뼈님께서 생각하시기에 어떤 알고리즘을 사용하는데 상수도 무시하지 못할 것 같은 상황이라면 상수를 넣어도 괜찮습니다.이는 계산하는 개발자의 판단에 있습니다.일반적으로 상수는 제거한다고 기억해주시면 될 것 같습니다.
- 1
- 2
- 28
질문&답변
공유자원과 동기화 문제에 관해서 질문이 있습니다.
안녕하세요 이지민님!궁금증이 두 가지가 있으셔서 순서대로 설명드리겠습니다.영상 초반부(0:26)에 "공유자원은 여러 프로세스가 공유하고 있기 때문에 각 프로세스의 접근 순서에 따라 결과가 달라질 수 있습니다"라고 먼저 설명합니다.이후 게임 코드를 예시로 설명할 때(2:22) "결과가 이렇게 엉망으로 된 이유는 health라는 공유자원을 여러 프로세스가 동시에 사용했기 때문입니다"라고 다시 한 번 공유자원 접근 순서에 대한 언급이 있습니다.지민님께서 말씀하신 "연산 결과가 잘못된다는 것은 결국 프로세스 실행 순서가 잘못되어 해당 프로세스가 공유 자원에 접근할 순서가 아닌데 접근해서 처리되면서 그로 인해 예상했던 연산 결과값이 아니다 라고 생각을 합니다." 라는 내용과 다르지 않는 설명이라고 생각합니다.맞습니다. 운영체제는 프로세스의 실행 결과를 컨트롤 하지는 않습니다.프로세스의 실행 결과는 프로세스의 코드와 데이터를 CPU가 직접 연산을 하면서 결과를 도출하는 것이기 때문입니다.궁금증이 해결되셨나요?
- 0
- 2
- 64
질문&답변
터미널 설정
안녕하세요 Jumi Lee님!터미널 종류가 어떤 것들이 뜨는지 알 수 있을까요?
- 0
- 2
- 20