답변 감사합니다! 답글의 내용에 기반하여 질문하나만 더 추가로 드리겠습니다. 그럼 실제로 유저모드의 프로세스가 cpu를 사용하지 않더라도, 유저모드의 프로세스가 필요로하는 IO작업은 커널모드에서 os에 의해 수행되고, 그 작업 또한 커널에 의해서 cpu를 사용하게 된다고 답변 해주셨는데요. 1. 그럼 os가 커널모드의 IO 작업을 위해 cpu를 사용하는 동안, 다른 프로세스들은 cpu를 사용하지 못하는 건가요?(멀티 코어 환경이 아닐때) 2. 그렇다면 이런 경우에, 유저모드 프로세스가 2개인 단일 코어 cpu 시스템에서는 한 프로세스가 IO 작업을 위해 cpu를 사용하지 않더라도, 실제로는 커널이 IO 작업을 위해 cpu를 사용하고 있기 때문에, 남은 한 프로세스 는 여전히 cpu를 사용하지 못하는 것인가요?
강의 잘 듣고 있습니다~ 강의를 듣다가 생기는 의문인데, 그림 4-6 에서 입출력 집중 프로세스가 입출력을 하는 동안에는 cpu 집중 프로세스가 cpu를 사용하고, cpu 집중 프로세스가 입출력을 하는 동안에는 입출력 집중 프로세스가 cpu를 사용하는 것처럼 그림이 나와있는데요. 그럼 한 프로세스가 입출력과 관련된 처리를 하는 동안에는 cpu를 사용하지 않는다는 것인가요? 제가 생각하기엔 입출력하는 동안에도 read, write를 위해 cpu를 사용해야할 것 같은 느낌이 들어서요.
실제로 Read/Write 같은 직접적인 I/O는 H/W에서 일어나고 그 장치를 제어하는 커널 코드는 OS가 작동시킵니다. OS도 프로그램이므로 당연히 CPU를 사용합니다. 사용자 모드 응용 프로그램이 I/O 요청 후 대기하는 동안 프로그램은 잠시 멈춰서 CPU를 사용하지 않습니다. 하지만 작업은 OS + H/W에서 일어나고 CPU 사용은 계속되지요. 참고하시기 바랍니다. ^^
@@nullnull_not_eq_null 답변 감사합니다! 답글의 내용에 기반하여 질문하나만 더 추가로 드리겠습니다. 그럼 실제로 유저모드의 프로세스가 cpu를 사용하지 않더라도, 유저모드의 프로세스가 필요로하는 IO작업은 커널모드에서 os에 의해 수행되고, 그 작업 또한 커널에 의해서 cpu를 사용하게 된다고 답변 해주셨는데요. 1. 그럼 커널모드에 의해서 IO 작업을 위해 cpu를 사용하는 동안, 다른 프로세스들은 cpu를 사용하지 못하는 건가요? 2. 그렇다면 이런 경우에, 프로세스가 2개인 단일 코어 cpu 시스템에서는 한 프로세스가 IO 작업을 위해 cpu를 사용하지 않더라도, 실제로는 커널이 IO 작업을 위해 cpu를 사용하고 있기 때문에, 남은 한 프로세스는 여전히 cpu를 사용하지 못하는 것인가요?
답변 감사합니다!
답글의 내용에 기반하여 질문하나만 더 추가로 드리겠습니다.
그럼 실제로 유저모드의 프로세스가 cpu를 사용하지 않더라도, 유저모드의 프로세스가 필요로하는 IO작업은 커널모드에서 os에 의해 수행되고, 그 작업 또한 커널에 의해서 cpu를 사용하게 된다고 답변 해주셨는데요.
1. 그럼 os가 커널모드의 IO 작업을 위해 cpu를 사용하는 동안, 다른 프로세스들은 cpu를 사용하지 못하는 건가요?(멀티 코어 환경이 아닐때)
2. 그렇다면 이런 경우에, 유저모드 프로세스가 2개인 단일 코어 cpu 시스템에서는 한 프로세스가 IO 작업을 위해 cpu를 사용하지 않더라도, 실제로는 커널이 IO 작업을 위해 cpu를 사용하고 있기 때문에, 남은 한 프로세스 는 여전히 cpu를 사용하지 못하는 것인가요?
1. 아니오. 운영체제도 프로그램입니다. 다만 코어가 하나라면 한 프로그램이 뭔가 하는 동안 나머지는 대기할 수 밖에 없습니다. Kernel이 좋은 점은 매우 높은 우선 순위에 있다고 봐야 하겠습니다.
2. 함께 해결됐으리라 생각합니다. ^^
GUI에는 나 잘되고 있어요~ 하고 전달해주기 위해서 높은 우선순위를 배정하고, 데이터 제어나 이런쪽에는 상대적으로 낮은 우선순위를 주는군요. 백그라운드가 CPU 우선순위 이야기였다니.. 좋은 내용 감사합니다.
좋은 평가와 피드백 감사합니다. 잠시 후에 라이브에서 뵙겠습니다. ^^
강의 잘 듣고 있습니다~
강의를 듣다가 생기는 의문인데, 그림 4-6 에서 입출력 집중 프로세스가 입출력을 하는 동안에는 cpu 집중 프로세스가 cpu를 사용하고,
cpu 집중 프로세스가 입출력을 하는 동안에는 입출력 집중 프로세스가 cpu를 사용하는 것처럼 그림이 나와있는데요.
그럼 한 프로세스가 입출력과 관련된 처리를 하는 동안에는 cpu를 사용하지 않는다는 것인가요?
제가 생각하기엔 입출력하는 동안에도 read, write를 위해 cpu를 사용해야할 것 같은 느낌이 들어서요.
실제로 Read/Write 같은 직접적인 I/O는 H/W에서 일어나고 그 장치를 제어하는 커널 코드는 OS가 작동시킵니다. OS도 프로그램이므로 당연히 CPU를 사용합니다. 사용자 모드 응용 프로그램이 I/O 요청 후 대기하는 동안 프로그램은 잠시 멈춰서 CPU를 사용하지 않습니다. 하지만 작업은 OS + H/W에서 일어나고 CPU 사용은 계속되지요. 참고하시기 바랍니다. ^^
@@nullnull_not_eq_null 답변 감사합니다!
답글의 내용에 기반하여 질문하나만 더 추가로 드리겠습니다.
그럼 실제로 유저모드의 프로세스가 cpu를 사용하지 않더라도, 유저모드의 프로세스가 필요로하는 IO작업은 커널모드에서 os에 의해 수행되고, 그 작업 또한 커널에 의해서 cpu를 사용하게 된다고 답변 해주셨는데요.
1. 그럼 커널모드에 의해서 IO 작업을 위해 cpu를 사용하는 동안, 다른 프로세스들은 cpu를 사용하지 못하는 건가요?
2. 그렇다면 이런 경우에, 프로세스가 2개인 단일 코어 cpu 시스템에서는 한 프로세스가 IO 작업을 위해 cpu를 사용하지 않더라도, 실제로는 커널이 IO 작업을 위해 cpu를 사용하고 있기 때문에, 남은 한 프로세스는 여전히 cpu를 사용하지 못하는 것인가요?
어려운 내용을 쉽게 설명해주셔서 큰 도움이 되었습니다! 감사합니다 ㅎㅎ
좋은 평가와 피드백 감사합니다. ^^
int num=0;
void plus10000(){
for(int i=0;i
두 스레드가 반복문을 끝내기 전에 num 값을 출력시키는 main 스레드 코드가 먼저 실행될 것으로 예상됩니다. 참고하시기 바랍니다.
선생님 설명하시다 보니 iocp가 나와서 추가 질문 드립니다~! iocp vs epoll을 성능 관점에서 선택한다면 어떤것을 선생님은 선택하시고 그이유가 궁금합니다 감사합니다:)
성능만 보면 IOCP의 완승입니다. 문제는 가성비 입니다. 여기서 경기가 끝나버립니다. 리눅스를 가성비로 이길 방법은 없습니다. 참고하시기 바랍니다. ^^
혹시 필기 앱 이름이 뭔지 알 수 있을까요??
MS 화이트보드 입니다. ^^
@@nullnull_not_eq_null 감사합니다!
22