노씨님 안녕하세요! 강의 잘 보고 있습니다! 클러스터링 인덱스 관련 질문드립니다! 강의 6분 24초경에 나오는 사진 자료를 예시로 드시면서 클러스터링 인덱스가 생성이 되는겁니다. 라고 말씀해주셨습니다. 이 부분에서 클러스터링 인덱스가 테이블과 관계없이 별도로 생기는 건지 의문이 들었습니다. Q. 클러스터링 인덱스 는 테이블을 정렬하면서 & 별도의 공간에 인덱스가 생성 되는 것이 맞나요? Q. DDL 에서 PK를 지정을 하지 않고, 이미 생성된 Table에서 특정 컬럼을 PK를 지정하면 Secondary Index처럼 별도의 공간에 클러스터링 인덱스 가 생성되는 건가요?
안녕하세요! 강의 잘 수강하며 따라가고 있습니다 :) 제가 꼬꼬무 문답 '멀티스레드가 멀티 프로세스보다 좋은 점은 무엇인가요?' 부분을 보다가 궁금한점이 'system call을 생략할 수 있기 때문에 자원을 효율적으로 관리할 수 있다'라고 나와있는데 시스템콜과 자원 관리랑 어떤 연관이 있나요 ..? 그리고 시스템콜이 자주 발생하면 자원이 왜 비효율적으로 사용되는건지 궁금합니다. 얼핏 짐작하기로는 시스템콜이 프로그램으로부터 요청을 받아서 커널이 일을 해주는거라서 이게 잦으면 커널이 하는일이 많아지기 떄문인거같은데 정확한 답변을 여쭤볼 수 있을까요?!
수업 내용에 따르면 자식 프로세스보다 부모 프로세스가 먼저 종료되면 자식 프로세스는 고아 프로세스가 됩니다. 이런 경우 자식 프로세스가 init 프로세스를 바라보게 된다고 알고 있습니다. 그럼 init이 새로운 부모 프로세스가 되고, 자식 프로세스가 종료하게 되면 wait()으로 리턴 값이 회수되지 않아 좀비 프로세스가 되나요?
배열의 삽입, 삭제 시간복잡도에 대해서 shift가 필요히니 O(n)이라고 하셨는데요. 삽입의 경우 해당 인덱스의 원소 값을 바꾸는 것이 아닌 기존 값을 유지하면서 새로운 값을 그 위치에 놓고자 한다면 O(n)이 맞겠습니다만 삭제의 경우 그냥 해당 위치를 초기화하면 되지 않을까요? 물론 말씀하신대로 쉬프트가 필요하다면 O(n)이 맞지만 삭제 연산에서 쉬프트가 필수적인가? 하는 의문이 있습니다.
1. 제어장치가 ALU에게 100과 120을 더하라는 지시를 하는 것도 제어신호를 통해 이루어지는 것인가요? 2. 만약 맞다면 해당 제어신호는 제어장치가 1번째 메모리 읽기 신호를 통해 읽어온 명령어를 해석한 직후에 전송되는 것인가요? 아니라면 어느 시점에 전송되는 것인가요? 3. CPU의 역할 중에서 메모리에 저장된 명령어 읽어들이기 + 읽어들인 명령어 해석은 제어장치가 단독으로 하는 것으로 생각되지만 읽어들인 명령어의 실행은 제어장치와 ALU가 함께하는 업무인 것인가요?
페이징에서 메모리 보호를 수행할때의 valid-invalid bit와 demand paging에서의 valid-invalid bit는 같은 건가요? 이전에 페이징에 대해서 배울 때, 페이징에서의 메모리 보호를 valid-invalid bit를 이용해서 한다고 배웠습니다. valid : 관련된 페이지가 논리 주소공간에 있는경우(legal) invalid : 관련된 페이지가 논리 주소 공간에 없는 경우(illegal) 7:58 부분에서 demand paging에 대해 배울 때 역시 valid-invalid bit가 등장하는 데요. 여기서 설명하는 건 좀 다릅니다 valid : 페이지가 legal하고 실제 메모리에 있는 경우 invalid : 페이지가 valid하지 않거나 현재 secondary storage에 있는 경우 둘다 valid-invalid란 단어를 사용하지만 설명은 다른것이 의아해 여쭙습니다.
선생님 안녕하세요 공유 자원과 임계구역 강의를 듣다가 9:58분 정도에 T1 eax 레지스터가 0으로 대입된다고 말씀해주셨는데 이전에 eax 값이 1이 증가한 후 suspend를 해서 다시 돌아오면 eax값이 1인 상태일거 같은데 1이 대입되어야 하는게 아닌지 궁금합니다. Thread 단위의 context switching이 일어날 때 레지스터 데이터들이 보존이 되는지도 궁금합니다..
안녕하세요 강사님! 강의 정말 잘 듣고 있습니다. 다만 강의를 듣다가 한가지 의문점이 생겼습니다. ppt 16페이지, 외워야 할 단위 체계#2에서요, 16비트는 65,536가지(64KB)이다. 라고 써있는데 65,536에서 왜 갑자기 KB 단위가 나오나요? 1 KB = 1000Byte 인 점에서 64KB가 나온 것 같은데, 지금은 경우의 수를 다루고 있는데 갑자기 여기서 byte가 왜 나오는지 이해가 안됩니다. 저 말대로라면 16bit = 2byte 이니까 16비트(2byte)는 65,536가지(64KB)이다. 즉, 2byte = 64KB 이다. 라고 해석이 됩니다... 제가 어느 부분을 놓친걸까요 ... ㅠㅠ
안녕하세요! 개발남노씨님 전공 면접 스터디 하면서 해당 강의 잘 듣고있습니다 :) 다름이 아니라 제목에서 언급한 강의에서 질문이 있는데, 이 그림 설명해주실때 "스택영역과 코드 영역을 공유한다"라고 말씀해주셨는데 이전 강의에서는 스택 영역만 각자 독립적이고 나머지만 공유한다고 말씀해주셨고 구글링해서 찾아봐도 스택 영역만 공유하는게 맞는것같은데 이부분이 그럼 잘못된 설명일까요..? https://inflearn.com/questions/638047 해당 글도 참고를 했는데 '코드 영역은 독립적으로 실행하는 부분도 있고 공유하는 영역도 있다' 라고 답변해주셨는데 조금 헷갈립니다..ㅜㅜ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. paged segmentation에서 segment 단위로 process 간의 공유나 process내의 접근 권한 보호가 이루어지도록 해서 paging 기법의 단점을 해결한다고 하신 부분이 잘 이해가 안되서 이 부분에 대해 부연설명 부탁드립니다!
가상 메모리의 전체적인 그림이 머릿속에 그려지지 않아 여러 자료를 찾아보면서 따로 공부를 해보았는데, 제가 이해한 내용이 맞을지 여쭤보고 싶어서 질문 글 남겼습니다. 짧게 적기 힘든 내용이라 좀 길게 적게된 것 같은데 양해부탁드립니다...ㅠ _______________________________________________________ 가상 메모리란 실행하고자하는 프로그램의 일부만을 메모리에 적재하여 물리 메모리보다 더 큰 프로그램을 실행시킬 수 있게 하는 기술로, 메모리가 실제 메모리보다 많아 보이게 하는 기술을 말한다. 페이징 기법을 기준으로 설명하자면, 물리 메모리를 프레임이란 단위로 나누고, 가상 메모리를 페이지란 단위로 나누어 관리한다. ( 페이지의 크기 = 프레임의 크기 ) 이때, 어떤 프로세스의 어떤 페이지가 어떤 프레임에 할당되어 있는지를 알기 위해 페이지 테이블이란 것을 활용하게 되고, MMU가 이러한 페이지 테이블을 기반으로 가상 주소와 물리 주소를 매핑해주게 된다. ( 페이지 테이블은 RAM에 저장되어 있다. ) 근데 페이지 테이블이 RAM에만 존재하게 된다면, 물리 주소로 접근하기 위해 (페이지 테이블을 참조하기 위해 한 번 + 프레임에 있는 페이지를 참조하기 위해 한 번) 총 두 번을 메모리에 접근하게 되는 현상이 발생한다. => 시간이 두 배로 걸려 비효율적 따라서 우리는 MMU안에 TLB라는 자주 참조하는 페이지 테이블을 위한 캐시를 따로 두고, 대부분의 메모리 접근을 한 번으로 처리할 수 있도록 한다. ( CPU가 접근하려는 논리 주소가 TLB에 존재하는 경우 메모리 접근 한 번만으로 처리가 가능 ) 참조 과정에서 만약 페이지 테이블의 유효비트가 0인 페이지에 접근하고자 하는 경우( 현재 물리 메모리에 적재되어있지 않은 페이지인 경우 = disk의 스왑 영역에 존재하는, swap out 되어있는 페이지인 경우) 페이지 폴트라는 인터럽트가 발생되게 된다. 그럼 운영체제는 잠시 동작을 멈추고 페이지 폴트 처리 루틴을 통해 ( swap out, swap in 과정 ) 스왑 영역으로부터 필요한 페이지를 물리 메모리에 적재시킨 후, 페이지 테이블의 유효 비트를 1로 바꾸어주게 된다. cpu가 다시 작업을 시작하고, cpu는 해당 페이지에 접근이 가능하게 된다. 가상메모리는 위와 같은 일련의 과정을 통해 마치 페이지 폴트가 일어나지 않은 것처럼( 실제 메모리보다 큰 메모리를 가지고 있는 것처럼 ) 작동할 수 있게 해준다. 다만 결국 스와핑이라는 작업 또한 어느 정도 시간이 걸리는 작업이기 때문에, 페이지 폴트 인터럽트가 너무 자주 발생되는 경우에는 스레싱이 일어나게 된다. _________________________________________________________ 해당 강의에서 나온 개념들이 이런 식으로 이어지는 것이 맞을까요? 추가적으로 4:30초 부터 나오는 내용에서 3번 항목이 이해가 안됩니다... 아래와 같이 이해해도 될까요. (가상메모리에 페이지가 존재하는지 확인하고) => 유효 비트를 확인하여 해당 페이지가 실제 RAM에 적재되어 있는지를 확인한다. (물리 메모리에 비어 있는 프레임이 있는지 찾습니다.) => 물리 메모리에 필요한 페이지를 swap in하기 위해 빈 공간이 있는지 찾는 과정. (물리 메모리에도 없다면 스와핑이 발동됩니다.) => 물리 메모리에 빈 공간이 없다면 적재되어있는 다른 페이지를 swap out 시킴. 이 과정에서 무엇을 swap out 시킬지는 OS가 결정. 이렇게 페이지를 로드(swap in)하고 페이지 테이블을 최신화 -> cpu 작업을 다시 시작.
안녕하세요. 선생님 좋은 강의 제공해주셔서 감사합니다!! 동일한 질문이 있긴 한데요.. 제가 이해하고 있는게 맞는지 궁금합니다.. 4비트는 16개의 경우의 수를, 8비트는 256개의 경우의 수 16비트는 65,536 경우의 수를 표현할 수 있는 건 알겠는데, 왜 16비트가 64KB가 되나요? 단순히 2의 16제곱만큼의 메모리 주소를 저장할 수 있고 메모리 용량이라고 표현할 수 있는 단위가 byte여서 메모리 주소만큼(2의 16제곱)의 byte(2의 16제곱)가 있다고 생각하면 되나요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 둘 다 table과 같다고 하는것 같아서요