외부에서 인터럽트가 들어와야하는데,
이게 생각해보면, CPU 바깥의 참여자들이 굉장히 많다는걸 알 수 있음.
거기다가 운영체제라는게,
뭐
프로세스 A B C 가 운체 (O) 위에서 시작할때,
A B C 들을 위한 코어가 따로 있고 O를 위한 코어가 따로 있는게 아니잖아?
거기다가 뭐
A O B O C O 이런식으로 O로 전환되는것도 아니고, (단지 예외에 의해 커널 데이터에 접근할 뿐)
그러니까 결국 그 뭔가 "시스템"이라는 느낌이 들게 하는거는
운영체제라는 하나의 객체가 아니라
CPU 바깥쪽과 결합된
수많은 프로세서들에 의해서 이루어진다고 생각함.
그리고 그 프로세서들이
커널영역의 메모리를 건드릴거임.
아마 동기화문제 때문에, 각자가 write 하는 영역은 따로따로 분할되어있어서
세밀하게 다루어질거같음.
예를들면 타이머는 여러개인가??? 에서 no 라면 1 writer 컨디션이 만족되는거고,
클락단위로 그러면 read write 충돌이 일어나는경우는??
이 경우는 뭐 대충 클럭의 손실, 그러니까 인터럽트가 예정 클럭보다 조금 더 늦게 도착했다 뭐 이런정도로만 부작용이 생기지 않을까 하는 생각이 들음.
0 과 1이 변경되는 동안,
0000000000(1)1111 을
0000000000(0)1111 으로 읽는거랑
0000000000(1)(0)00000을
0000000000(0)(0)000000으로 읽는거는 문제가 되긴 하는거같음. 2틱이 발생했는데 그걸 0틱으로 읽을테니까... 음 어렵네
댓글 0