저는 인프런에서 컴퓨터 과학(CS) 강의를 준비하고 있는 감자라고 합니다! 😄
학생과 주니어 개발자들이 AI 시대에 단순히 AI에 밀려나지 않고, 기본기를 탄탄히 다져 AI를 능숙히 활용하는 개발자로 성장할 수 있도록 돕는 것을 목표로 합니다.
강의
로드맵
전체 2수강평
- 만들면서 쉽게 배우는 컴퓨터 구조
- 그림으로 쉽게 배우는 운영체제
게시글
질문&답변
세번째 보는데도 내용이 너무 좋습니다.
만족스러우신 것 같아서 뿌듯하네요!반복 학습 하시면 기억이 더 오래 남을 것 같습니다.좋게 봐주셔서 감사합니다!😁
- 1
- 1
- 23
질문&답변
exit() 함수
안녕하세요 yhb10205님!execlp 함수가 실패했을 때 13번 라인이 실행되기 때문에 exit(1)로 수정해주는게 정확한 표현입니다.궁금증이 해결되셨나요? 😊
- 0
- 2
- 35
질문&답변
데이터 삽입, 삭제 함수 오류 범위 설정
안녕하세요 yhb10205님!AI 인턴이 자세히 설명해줘서 제가 따로 설명이 필요없을 것 같습니다.AI 인턴이 설명한 insertAt 함수와 deleteAt 함수 설명을 참고해주시면 될 것 같습니다!해당 설명을 보시고 예외 상황을 시뮬레이션 해보시면 이해가 더 쉬울 것 같습니다.😄
- 0
- 2
- 52
질문&답변
LRU 관련 질문
안녕하세요 재영님!영상을 확인해보니 해당 부분에서 LFU의 예시로 설명되는 걸 확인했습니다.이 부분은 우선 강의노트로 정정해놓겠습니다.조만간 영상 리뉴얼을 진행하겠습니다.지적해주셔서 감사합니다! 😅
- 1
- 2
- 74
질문&답변
고정 분할 방식도 연속 할당으로 알고 있는데 애니메이션이 다소 헷갈립니다.
영상에서 고정 분할 방식, 가변 분할 방식이 각각 페이징, 세그멘테이션 설명으로 되어 있는 걸 확인했습니다.이 부분은 제 실수이며 수뼈님께서 이해하신 것이 맞습니다.이 고정 분할 방식과 가변 분할에 대한 설명은 조만간 리뉴얼을 통해 추가하도록 하겠습니다.혼란 드려서 죄송합니다.🙇♂
- 0
- 2
- 48
질문&답변
Swapping, Manual Overlay, Dynamic Loading, Dynamic Linking의 개념이 헷갈립니다
먼저 메모리 오버레이를 설명드리겠습니다.메모리 오버레이는 임베디드 같은 가상 메모리를 사용하기 어려운 상황에서 흔히 사용 됩니다.메모리 오버레이는 프로그래머가 수동으로 프로그램을 나누는 설계를 해야합니다.운영체제는 관여하지 않고 프로그래머가 제어합니다.(자동 오버레이는 운영체제[링커, 로더]가 판단해 자동으로 수행하지만, 가상 메모리와 페이징 기술이 더 효율적이라 현대에선 거의 사용되지 않습니다) 다이나믹 로딩은 실제로 필요한 상황에만 해당 모듈을 불러오는 기술입니다. 따라서 해당 모듈이 필요하지 않는다면 프로그램 실행 중에 한 번도 메모리에 올라오지 않을 수 있습니다.운영체제는 보조적인 역할만 하며 프로그램이 직접 제어합니다. 다이나믹 링킹은 여러 프로그램에서 동시에 공유할 수 있는 함수들을 메모리의 한 공간에 올려서 메모리를 절약할 수 있는 기술입니다.예를 들어 printf라는 콘솔에 출력하는 함수를 다이나믹 링킹을 통해 printf함수를 사용하는 여러 프로그램이 공유하는 것입니다.다이나믹 링킹은 메모리 절약 뿐만 아니라 프로그램의 크기가 커졌을 때 컴파일 시간을 단축할 수 있고 프로그램의 크기를 작게 유지할 수 있다는 장점이 있습니다. 만약 printf함수만 변경하는 상황이라면 다이나믹 링킹을 사용하지 않을때는 전체 프로그램을 컴파일해야하므로 컴파일 시간이 길지만, 다이나믹 링킹을 사용해 printf함수를 포함한 파일만 컴파일하면 되기 때문에 시간이 짧아집니다!😀
- 0
- 2
- 51
질문&답변
ARP 문의
안녕하세요 HJ K님!질문 주신 생략된 부분이 맞습니다.라우터 2의 경우 교수님 PC의 MAC주소를 모르기 때문에 ARP를 이용해 교수님 PC의 정보를 저장합니다.AI인턴 봇이 잘 설명해놓아서 참고하시면 도움이 될 것 같습니다😀
- 1
- 2
- 43
질문&답변
각 메모리의 최대 요구 CPU 리소스는 어떻게 아나요?
최대 요구 자원과 Burst time은 비슷해보이지만 차이가 있습니다.Burst Time을 예측하는 것은 스케줄링을 위한 추정치인 반면 최대 요구 자원은 시스템의 안정성을 위한 상한선, 즉 약속과 같습니다.최대 요구 자원은 CPU(해당 프로세스는 최대 10번의 Burst Time, 각 Burst Time의 최대 Burst Time은 10ms)를 포함한 메모리(해당 프로세스가 사용할 최대 메모리 설정, ex: 4GB), I/O 장치등을 포함합니다. 운영체제는 이 정보를 바탕으로 자원을 할당하는 것이죠.프로세스의 코드와 데이터를 보면 최대 요구 자원을 확인할 수 있을 것 같지만 현실적으로 어려움이 있습니다.코드내 반목문, 조건문 같은 분기문과 I/O, 동적 메모리 할당이 있기 때문에 이를 모두 컴파일러가 정밀하게 계산하는 것은 어렵습니다.따라서 사용자가 명시적으로 알려주거나 운영체제가 보수적으로 설정해 데드락에 빠지지 않게 만들어 시스템의 안정성을 올려줍니다.BurstTime은 예측을 통해 스케줄링을 하며 성능의 감소, 상승이 있다면최대 요구 자원은 명시, 예측을 통해 시스템의 안정성을 책임집니다!
- 1
- 2
- 57
질문&답변
PCB들이 연결리스트로 저장되는 이유가 뭔가요?
안녕하세요 soap님!PCB들이 연결리스트에 저장된 이유가 궁금하셨군요.PCB들이 연결리스트에 저장되는 이유는 AI 인턴이 잘 설명해줬는데요.프로세스는 생성과 제거가 자주 일어나기 때문에 메모리에 동적인 할당이 필요합니다.만약 배열에 저장한다면 메모리 공간 낭비와 PCB 생성과 제거시 오버헤드가 있을 것입니다.반면 연결리스트에 저장되면 배열의 단점을 해결 할 수 있습니다. 하지만 연결리스트도 순차 탐색을 진행할 때는 O(n)이 걸린다는 단점이 있어서 일부 시스템에선 해시테이블이나 트리를 사용하기도 합니다. 일반적으론 연결리스트를 사용합니다.
- 1
- 2
- 59
질문&답변
해시 테이블에서 질문이 잇습니다.
안녕하세요 이지민님!해시 테이블 개념을 질문주셨는데 이해하신게 맞습니다.인덱스 데이터와 key-value는 다른 개념입니다.인덱스 데이터는 해시 테이블에 저장된 배열의 위치를 나타냅니다.인덱스는 key와 해시함수를 이용해 구해지고, 해당 인덱스에 key-value가 저장됩니다.일반적이지는 않지만 만약 해시함수가 없다면 key가 곧 인덱스일 수 있습니다. key가 9라면 9번 인덱스에 key-value를 저장하는 것이죠.이해하시고 직접 정리한 그림이 정확합니다.잘 이해하셨습니다 😀
- 1
- 2
- 46