안녕하세요.
운영체제를 공부하는 중인데, 대학교에서는 시스템 프로그래밍이나 운영체제 수업을 배운 적이 없어 뒤늦게 독학으로 하고있습니다.
독학하는 사람들이 그렇지만, 물어볼 곳이 없어서 질문드립니다.
공부하다가 생긴 의문에서 나름대로 답을 생각했는데, 맞는지 잘 모르겠습니다. 구글링해봐도 뚜렷한 답을 못찾았습니다.(아마 제가 못찾은 것이겠지만)
그래서 이 게시판에 질문드립니다. 아시는 분이 있다면 부디 답을 주셨으면 합니다.
우선 질문을 드리기전에 멀티코어&멀티프로세스 환경에서 모든 프로세스가 멀티스레드로 작동하고 있다고 가정합니다.
질문을 다음과 같습니다.
1. 멀티코어에서 동시에 같은 프로세스가 작동할 수 있습니까?
1.1 프로세스 스케쥴러는 레디 상태의 프로세스가 적재된 레디 큐에서 선별하는걸로 알고있기에, 동시에 같은 프로세스가 실행될 수 없다고 생각합니다. 이게 맞습니까?
2. 프로세스에서 I/O 인터럽트가 발생하면, 프로세스가 블로킹 상태가 되어 I/O 완료 인터럽트가 발생할 때까지 레디 큐에 적재되지 않는걸로 알고있습니다.
다만, 이게 멀티 스레드 일 때는 어떻게 됩니까?
스레드 하나에서 인터럽트가 발생하면 스레드가 블로킹이 되고 프로세스가 블로킹이 되는게 아닌걸로 알고있습니다. 그렇다면, I/O 인터럽트가 발생한 프로세스가 실행된다는건, 프로세스 스케쥴러의 단위가 스레드가 된다는 것같은데, 그럴 것같지는 않습니다.
해당 환경에서 프로세스 스케쥴러는 어떻게 작동합니까?
구글링도 해봤는데, 답을 못찾았습니다.
공룡책이랑 윤성우님의 뇌를 자극하는 윈도우즈 시스템 프로그래밍, 동영상 강의까지 봐서 교과서적인 내용은 알고있다고 생각합니다.
혹여나 길어진다면, 포스팅이나 책을 추천해주셔도 감사하겠습니다.