Chapter04 CPU 스케줄링 개요

Sdílet
Vložit
  • čas přidán 28. 08. 2024
  • 운영체제는 작동중인 어플리케이션 프로세스들을 제어하는 역할을 수행합니다. 그 중에서도 가장 중요한 전산자원인 CPU를 시분할 방식으로 나눠사용할 수 있도록 각 프로세스들을 통제합니다. 이 때 등장하는 말이 바로 선점형과 비선점형 입니다. 그리고 우선순위와 시스템 설정에 따라 최적화된 스케줄링을 진행합니다. 관련된 이론을 접하기에 앞서 꼭 알아야 할 용어와 개념들을 본 영상에 간단히 정리합니다.

Komentáře • 17

  • @sungjuyea4627
    @sungjuyea4627 Před 2 lety

    어려운 내용을 쉽게 설명해주셔서 큰 도움이 되었습니다! 감사합니다 ㅎㅎ

  • @marunarae550
    @marunarae550 Před 2 lety

    GUI에는 나 잘되고 있어요~ 하고 전달해주기 위해서 높은 우선순위를 배정하고, 데이터 제어나 이런쪽에는 상대적으로 낮은 우선순위를 주는군요. 백그라운드가 CPU 우선순위 이야기였다니.. 좋은 내용 감사합니다.

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  Před 2 lety

      좋은 평가와 피드백 감사합니다. 잠시 후에 라이브에서 뵙겠습니다. ^^

  • @user-sn2qk9jw6n
    @user-sn2qk9jw6n Před rokem +2

    답변 감사합니다!
    답글의 내용에 기반하여 질문하나만 더 추가로 드리겠습니다.
    그럼 실제로 유저모드의 프로세스가 cpu를 사용하지 않더라도, 유저모드의 프로세스가 필요로하는 IO작업은 커널모드에서 os에 의해 수행되고, 그 작업 또한 커널에 의해서 cpu를 사용하게 된다고 답변 해주셨는데요.
    1. 그럼 os가 커널모드의 IO 작업을 위해 cpu를 사용하는 동안, 다른 프로세스들은 cpu를 사용하지 못하는 건가요?(멀티 코어 환경이 아닐때)
    2. 그렇다면 이런 경우에, 유저모드 프로세스가 2개인 단일 코어 cpu 시스템에서는 한 프로세스가 IO 작업을 위해 cpu를 사용하지 않더라도, 실제로는 커널이 IO 작업을 위해 cpu를 사용하고 있기 때문에, 남은 한 프로세스 는 여전히 cpu를 사용하지 못하는 것인가요?

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  Před rokem +2

      1. 아니오. 운영체제도 프로그램입니다. 다만 코어가 하나라면 한 프로그램이 뭔가 하는 동안 나머지는 대기할 수 밖에 없습니다. Kernel이 좋은 점은 매우 높은 우선 순위에 있다고 봐야 하겠습니다.
      2. 함께 해결됐으리라 생각합니다. ^^

  • @user-sn2qk9jw6n
    @user-sn2qk9jw6n Před rokem +1

    강의 잘 듣고 있습니다~
    강의를 듣다가 생기는 의문인데, 그림 4-6 에서 입출력 집중 프로세스가 입출력을 하는 동안에는 cpu 집중 프로세스가 cpu를 사용하고,
    cpu 집중 프로세스가 입출력을 하는 동안에는 입출력 집중 프로세스가 cpu를 사용하는 것처럼 그림이 나와있는데요.
    그럼 한 프로세스가 입출력과 관련된 처리를 하는 동안에는 cpu를 사용하지 않는다는 것인가요?
    제가 생각하기엔 입출력하는 동안에도 read, write를 위해 cpu를 사용해야할 것 같은 느낌이 들어서요.

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  Před rokem +3

      실제로 Read/Write 같은 직접적인 I/O는 H/W에서 일어나고 그 장치를 제어하는 커널 코드는 OS가 작동시킵니다. OS도 프로그램이므로 당연히 CPU를 사용합니다. 사용자 모드 응용 프로그램이 I/O 요청 후 대기하는 동안 프로그램은 잠시 멈춰서 CPU를 사용하지 않습니다. 하지만 작업은 OS + H/W에서 일어나고 CPU 사용은 계속되지요. 참고하시기 바랍니다. ^^

    • @user-sn2qk9jw6n
      @user-sn2qk9jw6n Před rokem +1

      @@nullnull_not_eq_null 답변 감사합니다!
      답글의 내용에 기반하여 질문하나만 더 추가로 드리겠습니다.
      그럼 실제로 유저모드의 프로세스가 cpu를 사용하지 않더라도, 유저모드의 프로세스가 필요로하는 IO작업은 커널모드에서 os에 의해 수행되고, 그 작업 또한 커널에 의해서 cpu를 사용하게 된다고 답변 해주셨는데요.
      1. 그럼 커널모드에 의해서 IO 작업을 위해 cpu를 사용하는 동안, 다른 프로세스들은 cpu를 사용하지 못하는 건가요?
      2. 그렇다면 이런 경우에, 프로세스가 2개인 단일 코어 cpu 시스템에서는 한 프로세스가 IO 작업을 위해 cpu를 사용하지 않더라도, 실제로는 커널이 IO 작업을 위해 cpu를 사용하고 있기 때문에, 남은 한 프로세스는 여전히 cpu를 사용하지 못하는 것인가요?

  • @user-xm3ir6oc4g
    @user-xm3ir6oc4g Před rokem

    선생님 설명하시다 보니 iocp가 나와서 추가 질문 드립니다~! iocp vs epoll을 성능 관점에서 선택한다면 어떤것을 선생님은 선택하시고 그이유가 궁금합니다 감사합니다:)

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  Před rokem

      성능만 보면 IOCP의 완승입니다. 문제는 가성비 입니다. 여기서 경기가 끝나버립니다. 리눅스를 가성비로 이길 방법은 없습니다. 참고하시기 바랍니다. ^^

  • @user-md5eg9gx4t
    @user-md5eg9gx4t Před rokem

    int num=0;
    void plus10000(){
    for(int i=0;i

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  Před rokem

      두 스레드가 반복문을 끝내기 전에 num 값을 출력시키는 main 스레드 코드가 먼저 실행될 것으로 예상됩니다. 참고하시기 바랍니다.

  • @jasonpark6381
    @jasonpark6381 Před 2 lety

    22

  • @Sia819_
    @Sia819_ Před 2 lety

    혹시 필기 앱 이름이 뭔지 알 수 있을까요??