blocking system call은 call이 완전히 수행될 때까지 반환(return)되지 않는 것을 의미합니다. 반대로, call후에 바로 return되고 다른 접근 방식을 이용해서 값을 가져오거나 할 수도 있습니다.
>멀티 프로세스라는건 한번에 여러 프로세스를 동시에 실행한다는 의미인가요?
>CPU는 한번에 한가지 일만 처리하지 않나요?
실제 물리적인 코어의 개수는 적으나, OS나 기타 다른 요소에 의해서 그보다 훨씬 많은 프로세스(유저 프로그램 등)가 동시에 동작하는 것 처럼 보여줍니다. 그러므로.. 동시에 실행할 수도 있지만(프로세스의 개수가 코어 수보다 적은 경우) 대부분의 경우 몇개 안되는 코어를 여러 프로세스가 빠르게 번갈아 가면서 실행해서 동시에 실행하는 것처럼 보여지게 되는 것이죠.
>시스템 콜과 인터럽트의 차이가 정확히 어떤건지 좀 알려주세요.
시스템콜은 다소 운영체제의 관점에서... 유저 프로그램이 커널 영역의 기능을 사용하고자 할 때 이용되는 인터페이스입니다. 현대의 운영체제는 대부분 유저 프로그램과 실제 운영체제의 커널을 분리하는데, 유저 프로그램은 커널에서 제공하는 인터페이스 만을 이용해서 원하는 동작을 수행하게 끔 되어 있습니다. 왜냐하면.. 대체적으로 이래야 블루스크린과 같이 다른 프로그램의 영역을 침범하거나 해서 시스템이 죽는 것을 방지하기가 용이하기 때문이죠.
인터럽트는 비동기적인 동작의 처리에 관련된 내용입니다. 보통 ISR(Interrupt Service Routine)이라는 특정 Interrupt 신호가 있을 때 수행되어야 할 동작을 정의해두고, 관련된 신호가 발생하면(hw/sw) ISR을 이용해서 처리를 하게 되죠. 가령 어떤 버튼을 사용자가 누르면 화면에 무언가가 표시 되어야 할 때, 버튼을 누른 것을 알아내기 위해 계속해서 관련된 값을 체크하는 것은 비효율 적이죠. 버튼에 대한 처리(화면에 표시함)를 ISR로 정의하고, 버튼이 눌렸을 때 ISR이 동작하게 끔 해두면, 남는 시간에 다른 일을 수행하여 전체적으로 자원을 효율적으로 활용할 수 있습니다. 물론 인터럽트를 처리하기 위한 다소의 비용은 발생합니다(수행중인 작업과 관련된 내용을 저장하고 복구하는 등). 그러므로 인터럽트는 언제 발생할지 알 수 없는 작업이나, 가끔 발생하는 작업에 특히 유리하며, 지속적으로 체크하는 방법은 동작의 발생시점을 충분히 예상할 수 있을 때 유리합니다.
...
blocking system call은 call이 완전히 수행될 때까지 반환(return)되지 않는 것을 의미합니다. 반대로, call후에 바로 return되고 다른 접근 방식을 이용해서 값을 가져오거나 할 수도 있습니다.
>멀티 프로세스라는건 한번에 여러 프로세스를 동시에 실행한다는 의미인가요?
>CPU는 한번에 한가지 일만 처리하지 않나요?
실제 물리적인 코어의 개수는 적으나, OS나 기타 다른 요소에 의해서 그보다 훨씬 많은 프로세스(유저 프로그램 등)가 동시에 동작하는 것 처럼 보여줍니다. 그러므로.. 동시에 실행할 수도 있지만(프로세스의 개수가 코어 수보다 적은 경우) 대부분의 경우 몇개 안되는 코어를 여러 프로세스가 빠르게 번갈아 가면서 실행해서 동시에 실행하는 것처럼 보여지게 되는 것이죠.
>시스템 콜과 인터럽트의 차이가 정확히 어떤건지 좀 알려주세요.
시스템콜은 다소 운영체제의 관점에서... 유저 프로그램이 커널 영역의 기능을 사용하고자 할 때 이용되는 인터페이스입니다. 현대의 운영체제는 대부분 유저 프로그램과 실제 운영체제의 커널을 분리하는데, 유저 프로그램은 커널에서 제공하는 인터페이스 만을 이용해서 원하는 동작을 수행하게 끔 되어 있습니다. 왜냐하면.. 대체적으로 이래야 블루스크린과 같이 다른 프로그램의 영역을 침범하거나 해서 시스템이 죽는 것을 방지하기가 용이하기 때문이죠.
인터럽트는 비동기적인 동작의 처리에 관련된 내용입니다. 보통 ISR(Interrupt Service Routine)이라는 특정 Interrupt 신호가 있을 때 수행되어야 할 동작을 정의해두고, 관련된 신호가 발생하면(hw/sw) ISR을 이용해서 처리를 하게 되죠. 가령 어떤 버튼을 사용자가 누르면 화면에 무언가가 표시 되어야 할 때, 버튼을 누른 것을 알아내기 위해 계속해서 관련된 값을 체크하는 것은 비효율 적이죠. 버튼에 대한 처리(화면에 표시함)를 ISR로 정의하고, 버튼이 눌렸을 때 ISR이 동작하게 끔 해두면, 남는 시간에 다른 일을 수행하여 전체적으로 자원을 효율적으로 활용할 수 있습니다. 물론 인터럽트를 처리하기 위한 다소의 비용은 발생합니다(수행중인 작업과 관련된 내용을 저장하고 복구하는 등). 그러므로 인터럽트는 언제 발생할지 알 수 없는 작업이나, 가끔 발생하는 작업에 특히 유리하며, 지속적으로 체크하는 방법은 동작의 발생시점을 충분히 예상할 수 있을 때 유리합니다.
댓글 달기