스레드 컨텍스트 스위칭이란 cpu의 레지스터에 있는 정보를 해당 스레드의 tcb에 저장하고 다른 스레드의 tcb의 정보를 가져오는거라고 생각합니다. 그럼 thread1 = threading.Trhead(target=foo).start() thread2 = threading.Trhead(target=foo).start() 에서 멀티코어환경에서 실행시킨다고 가정할 시에는 이 코드를 실행시켯을때 스레드 컨텍스트 스위칭이 일어나지 않겠죠 ??
전 학습강의에서는 입출력 방식에는 크게 프로그램입출력, 입터럽트기반 입출력, DMA 입출력 방식이 있었는데, 여기서 입출력 작업때 프로세스 상태가 대기상태로 바뀐느경우는 프로그램 입출력 방식을 말하는거죠 ? 프로세스의 상태 레지스터를 주기적으로 확인한다고 했으니 cpu가 여기서 쓰이므로 대기상태로 가는것인가요 ? 혹은 입터럽트 기반 방식도 말하는건가요? 인터럽트 서비스 루틴을 실행하는 동안 대기 상태로 변하는건가요 ? DMA방식은 명령을 읽을때 DMA컨트롤러를 사용하면 되니까 CPU는 점유될 필요가 없다고 생각했습니다.
안녕하세요. 강의를 보다 궁금한 점이 생겨서 질문하게되었습니다. 배열의 경우에는 중간에 데이터를 삽입 삭제를 하게되면 중간데이터를 기점으로 왼쪽이나 오른쪽으로 모든 데이터를 쉬프트를 해야하기 때문에 빅오n의 시간을 가진다고 볼 수 있는데 그렇다면 링크드리스트에서는 중간 데이터를 삽입, 삭제하게되면 다음 노드나 이전 노드의 주소를 참조만 하기만 하면되기 때문에 빅오 일의 시간복잡도를 가지게 된다고하였습니다. 그런데 중간에 데이터를 삽입,삭제할 때 이전 노드, 다음 노드의 주소를 참조하기 위해서는 해당 노드에 접근해서 참조 주소를 알아내야하지않나요? 그렇다면 링크드리스트의 경우 조회할 때 빅오 n의 시간복잡도를 가지기 때문에 빅오 n이라고 생각이 들 수도 있는데 아닌가요? 제 생각의 오류가 있는지 알고 싶습니다. 링크드리스트의 삽입 삭제시 삽입삭제 o(1) + 이전노드주소참조하기위한조회 o(n) 이므로 o(n)의 시간복잡도를 가지는게 아닌지 궁금합니다.
dfi 부분 설명 잘못하신거 아닌가요? timer 인터럽트는 계속 발생 되는 거구, 다만 버튼을 눌렀을 때 해당 버튼 누른 만큼 인터럽트가 처리를 할수 있냐 없냐 확인하는게 아닌가 싶어서요 인터럽트에 heavy() 이 들어 있으면 인터럽트를 놓치는 거구 dfi 를 하게 되면 인터럽트를 놓치지 않게 처리 할 수 있다. 그 부분을 설명하는거 같은데 타이머 인터럽트는 계속 백단에서 처리되고 있는거는 동일한거 아닌가 해서요 헷갈리네요 (실습 8번에서 설명하는 영상입니다.)
하나의 코어가 동시에 처리하는 명령어 단위 라고 되어있는데 2코어 4스레드는 1코어당 2개의 명령어단위를 처리할수있으니까 하드웨어적 스레드는 2개인가요? 논리프로세서 설명하실때, 프로그램이 느끼기에 몇개의 CPU가있냐는 하드웨어 스레드의 갯수를 말하는데, 이때는 4개의 스레드가 실행중인데 하드웨어적 스레드는 2개인지, 4개인지 잘 모르겠습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 소셜 로그인 기능을 구현할 때 팩토리 메서드 패턴으로도 구현이 가능한지 궁금합니다. 쿼리파라미터로 어떤 provider(kakao, naver 등)가 들어오는지에 따라 그에 맞는 서비스(KakaoLoginService, NaverLoginService)를 호출하고 싶은데 전략 패턴이 아닌 팩토리 메서드 패턴으로도 이런 형태의 구현이을 하는지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 커널의 실체가 뭔지, 커널모드, 유저모드, 커널스레드, 유저스레드 가 뭔가 서로 연관관계가 있어 어떻게 유기적으로 동작하는지 한 사이클이 궁금하네요 유저스레드는 시스템콜이 발생하면 블러킹이 되는데 이를 피하기 위한 방법이 여러가지가 있을 텐데 이에 대해 좀 더 알고 싶네요. 이를 따로 공부할 수 있을 만한 교재나 키워드 부탁드려요.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 여러 프로세스 혹은 스레드가 동일한 파일에 접근하면 같은 내용의 디스크립터가 반환되나요? 현재 다른 스레드(프로세스가) 같은 파일을 열고 있다는 메타데이터는 어디에서 관리되나요? 그리고 파일을 동시에 접근 제어 할 수 있는 방법은 유저스레드에서 뮤텍스나 세마포어나 락 설정 외에 커널에서 제공하는 방법이 있나요?
안녕하세요 강의 잘 듣고 있습니다. 좋은 강의에 감사합드립니다. 9강의 듣던 중 궁금한 것이 있어 문의 드립니다. 오퍼랜드에 데이터를 직접 표현 하는 것보다 주소를 명시하는 것이 더 많은 데이터를 저장할 수 있다고 설명해주셨는데 화면에서는 동일한게 10번지 영역이 12~8사이로 4비트인데 왜 데이터 직접표현에서는 2의4이고 데이터 주소명시에서는 2의16으로 계산하는지 이해가 안됩니다 데이터 주소명시에서도 여러 데이터의 주소를 명시하는 경우라면 제한 된 데이터 공간에서 결국 주소를 명시할 수 있는 공간은 작아져서 표현할 수 있는 데이터 크기가 줄어드는 것이 같은 거 아닌지도 궁금합니다.
우선 강의 잘 듣고 있다는 말씀 드리고 싶습니다. 다름이 아니라 강의에서 나오는 RETURN 이 RET 을 의미하는것일까요? 오래되서 가물가물하긴 하지만 mov esp, ebp pop ebp 로 스택 프레임을 정리하고 ret 을 호출하여 EIP 에 복귀 주소를 로딩시키는것과 동일하다는 것으로 볼 수 있는건가요? 공부하면서 어쌤블리에 따로 RETURN 이 존재하지 않았던것으로 기억해서 질문드립니다!
강의에서 모든 파일 시스템의 종류들은 다 FAT형식을 기본으로 갖는다고 하셨는데 검색해보니까 FAT도 한 종류의 파일시스템일 뿐이고 NTFS나 EXT 같은 종류의 파일 시스템은 각자 다른 방식으로 파일을 관리한다고 나와서요 그냥 기본적으로 FAT형식을 기반으로 발전시킨것들이다라고 이해해야할까요? 다른 종류의 파일 시스템들도 0번 트랙, 0번 섹터의 MBR을 다 가지고 있는건가요?
1번 실습 파일에 printf 를 찍을 때 vTaskDelay를 하고나서 왜 Printf를 찍나여? 뭔가 의미상으론 태스크가 할일(Printf 찍는 것)을 하고 Delay에 빠지는게 맞는 것 같은데 왜 TaskDelay 이후에 printf를 찍는 지 궁금합니다. vTaskDelay (pdMS_TO_TICKS (1000)); // 스스로 휴면상태에 들어감 Blocked로 다시 1000ms 후running printf("b"); fflush(stdout); // 문자 'a' 출력