인터럽트와 시스템 콜을 설명합니다! 당연히 유저 모드, 커널 모드도 설명해야겠죠? 그런데 이 모든게 프로그래밍 언어와 무슨 상관이냐구요?? 상관있죠! 왜 상관있냐면요..!

Sdílet
Vložit
  • čas přidán 4. 07. 2024
  • #시스템콜 #인터럽트 #커널모드 #유저모드
    우리가 작성한 프로그램은 실행 중에 인터럽트를 만나기도 하고, 혹은 시스템 콜을 통해 운영체제가 제공하는 서비스를 이용하기도 합니다.
    이번 영상은 이 내용을 자세히 살펴보는 영상이에요~!
    인터럽트와 시스템콜을 설명하려면 당연히
    유저 모드와 커널 모드에 대해서도 알려드려야겠죠!
    마지막으로, 시스템 콜이 우리가 개발할 때 사용하는 하이레벨 프로그래밍언어와
    무슨 상관인지도 설명드립니다.
    재밌게 봐주세요~! :)
    00:00 오프닝
    00:15 유저 모드와 커널 모드 설명
    02:31 커널 모드 존재 이유
    03:12 인터럽트(interrupt)
    05:08 시스템 콜(system call)
    06:41 예제로 배우는 인터럽트, 시스템 콜
    11:59 프로그래밍 언어와 시스템 콜
    14:41 클로징
  • Věda a technologie

Komentáře • 55

  • @user-cl2by9fd8p
    @user-cl2by9fd8p Před 19 dny

    쓰레드에 대해 공부하는데, 설명이 진짜 잘 되어있어서 공부하기 편했습니다! 이런 강의 만들어주셔서 감사합니다 :)

  • @user-cv4jm2sz5k
    @user-cv4jm2sz5k Před 6 měsíci

    쉬운 코드님의 영상을 볼 때마다 울림이 있네요 감사합니다

  • @celeron8939
    @celeron8939 Před 2 lety +2

    비싼 대학강의를 쉽게 잘 알려주시네요; 감사합니다.

    • @ez.
      @ez.  Před 2 lety +1

      채널 이름값 해야죠 ㅎㅎ 댓글 감사합니다 :)

  • @han.s4228
    @han.s4228 Před 2 lety +2

    영상들이 퀄리티가 높고 설명도 잘해주셔서 이해가 잘 됩니다. 많은 도움이 되었습니다. 채널 떡상하길 기원할께요~

    • @ez.
      @ez.  Před 2 lety +1

      우아~ 칭찬 피드백 주셔서 정말 감사합니다~! 열심히 만든 보람이 있어서 뿌듯하네요 :) 계속해서 좋은 영상으로 찾아뵐게요~!!

  • @user-fm4oz1er9l
    @user-fm4oz1er9l Před 2 lety

    퀄리티 어마어마합니다. 영상 하나 만드는데 투자하시는 정성과 노력이 느껴지네요

    • @ez.
      @ez.  Před 2 lety +3

      크~~ 감사합니다
      맞습니다 실은 정말 많은 노력을 하고 있는데요,
      보시는 분들이 조금이라도 더 쉽게 이해하셔서 좋은 개발자로 성장하실 수 있으면 좋겠네요 👍

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

    와 진짜 완전 쉽게 잘 이해되는 설명이에요 최고..!

    • @ez.
      @ez.  Před rokem +1

      흐흐 감사합니다! 앞으로도 계속해서 채널 이름값 하도록 하겠슴당!! ^^7

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

    3시간 강의들으면서 애매했던 부분들이 15분만에 해결 뚝딱

    • @ez.
      @ez.  Před rokem

      yeah~!! nice~!!

  • @jh_j8840
    @jh_j8840 Před 2 lety

    정말 감사합니다. 운영체제 재생목록 정주행 중인데 몰랐던 부분들이 전부 이해되네요! 감사합니다!

    • @ez.
      @ez.  Před 2 lety +1

      크~! 도움이 된 것 같아서 기분이 좋네요 ㅎㅎ
      앞으로도 유익한 영상으로 인사드릴게요 :)

  • @NLDS003
    @NLDS003 Před rokem

    인터럽트에 의한 cpu 스케쥴링과 시스템콜까지 종합적으로 이해가 쏙쏙 됩니다👍

    • @ez.
      @ez.  Před rokem

      크~~ 영상이 쏙쏙 이해돼서 다행입니다 👍

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

    진짜 헷갈렸는데 이해가 되었습니다 ㅠㅠ 감사합니다!!!!!!

    • @ez.
      @ez.  Před rokem +1

      도움이 될 수 있어서 다행입니다 :)
      댓글 감사합니다 👍

  • @chung8492
    @chung8492 Před 2 lety +1

    내용이 너무 좋네요 ㅎㅎㅎ 마침 시스템 프로그래밍 공부하고 있었는데 많은 도움이 됐습니다. 채널이 곧 떡상하실거 같아요. 잘보고 갑니닷!

    • @ez.
      @ez.  Před 2 lety +1

      와우와우! 너무너무 기분 좋은 댓글이네요~!!ㅎㅎ 많은 도움이 됐다니 저도 많이 뿌듯합니당ㅎㅎ 앞으로도 자주자주 시청해주세용~ㅎㅎ 새해 복도 많이 받으시구용 :)

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

    감사합니다~ 최고입니다!

    • @ez.
      @ez.  Před rokem

      우리 모두 최고입니다!! 위 아 더 베스트 올 투게더!!

  • @developerkang3717
    @developerkang3717 Před 2 lety +1

    잘 보고 갑니다 ㅎ

    • @ez.
      @ez.  Před 2 lety +1

      댓글 감사하옵니다~ 새해 복 많이 받으세요 :)

  • @kimlee2331
    @kimlee2331 Před 2 lety +1

    설명 너무 좋네요~

    • @ez.
      @ez.  Před 2 lety +1

      크 감사합니다~! 이런 댓글은 정말 큰 힘이 되네요~!ㅎㅎ 더 좋은 영상으로 찾아뵐게요 :)

    • @kimlee2331
      @kimlee2331 Před 2 lety +1

      내용 정말 알찬데 알고리즘이 아직 잘 미치지 않는 거 같아서 아쉽네요ㅠㅠ 대신 주변 분들한테 추천하고 있어요ㅎㅎㅎㅎ 매번 좋은 영상 감사해요~!

    • @ez.
      @ez.  Před 2 lety +1

      @@kimlee2331 우와ㅠㅠ 감동입니다 ㅠㅠ 정말 정말 감사합니다!! 꾸준히 양질의 콘텐츠를 올리면 언젠가 더 많은 분들에게 닿을 수 있겠죠?ㅎㅎ 저도 계속 화이팅할게요!!

  • @nanto-_-
    @nanto-_- Před 9 měsíci

    설명 지긴다😊

  • @jaaj5290
    @jaaj5290 Před rokem

    최고입니다

    • @ez.
      @ez.  Před rokem

      덕분입니다

  • @user-om3uu7ve9v
    @user-om3uu7ve9v Před 5 měsíci

    9:24 여기에서 파일을 읽을 준비가 됬다는 말이 ssd에서 메모리로 가져왔다는 건가요?

  • @woongtube6873
    @woongtube6873 Před rokem

    질문 하나 드립니다 !! 하드웨어 인터럽트가 알림과 같은 부분이라면 시스템 콜은 커널 모드로 진입하여 하드웨어를 사용하기 위한 수단이라고 보면 될까요 ??

    • @ez.
      @ez.  Před rokem

      반갑습니다 :) 시스템콜들 중에 일부는 말씀하신 것처럼 하드웨어를 사용할 목적으로 존재하고요, 하지만 그 외에도 가령 프로세스나 스레드를 생성한다거나 등등 하드웨어 외의 목적으로 존재하는 것들이 있습니다

  • @name-sw4rjslwppwpwokdjd
    @name-sw4rjslwppwpwokdjd Před 2 lety +1

    안녕하세요! 혹시 커널모드에서 유저모드로 왔다 갔다 하기 위해서 cpu상태 저장하고 복구하는 것도 컨텍스트 스위칭이라고 할 수 있나용? (입출력 끝났다고 인터럽트 왔을때)

    • @ez.
      @ez.  Před 2 lety +3

      반갑습니다 :)
      네 맞습니다~! 상황에 따라서는 유저모드와 커널모드를 스위칭하는 것도 컨텍스트 스위칭이라고 할 수 있을 것 같아요~
      혹시나 해서 저도 좀 더 검색해봤는데 위키에도 비슷한 내용이 있어서 참고하실 수 있게 남겨 놓을게요 :)
      The precise meaning of the phrase “context switch” varies. In a multitasking context, it refers to the process of storing the system state for one task, so that task can be paused and another task resumed. A context switch can also occur as the result of an interrupt, such as when a task needs to access disk storage, freeing up CPU time for other tasks. Some operating systems also require a context switch to move between user mode and kernel mode tasks.
      en.wikipedia.org/wiki/Context_switch

    • @name-sw4rjslwppwpwokdjd
      @name-sw4rjslwppwpwokdjd Před 2 lety +1

      @@ez. 우왁 감사합니다

  • @asciicode8151
    @asciicode8151 Před rokem

    ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아이가 울면 인터럽트 ㅋㅋㅋㅋㅋ.
    그러면 저는 " 엄마가 잔소리하면 인터럽트"!!!!

    • @ez.
      @ez.  Před rokem

      앜ㅋㅋㅋㅋㅋㅋㅋ 새해에는 작년보다 인터럽트가 적게 발생하길요 ㅠㅠㅋㅋㅋ

  • @user-ku3tg3xv5d
    @user-ku3tg3xv5d Před 2 lety +1

    궁금한게 있습니다 interrupt나 system call로 kernel 들어갈때 ISR을 돌고 오는걸로 아는데 아무리 짧다고 하지만 시간을 아예 안쓰지는 않는것으로 알고 있습니다 그러면 이 시간도 시분할 시스템에서 timer에 포함이 되는 건가요? 만약 그렇다면 아무리 짧다고 하지만 running상태에서 수행중인 프로세스에서 여러번 interrupt가 발생하여 시간을 뺏긴거니까 안좋은거 아닌가요? 두서 없는데 interrupt/system call로 kernel 들어가서 isr을 실행할때 running 상태의 timer시간을 쓰는지 안쓰는지 아니면 kernel들어갈때는 timer가 멈추는것인지 궁금해서 댓글 남겨봅니다

    • @ez.
      @ez.  Před 2 lety +2

      안녕하세요~
      user mode에서 실행이 되다가 interrupt/system call을 통해 kernel code(예를 들어 ISR)가 실행될 때, 커널에서 실행됐던 시간을 포함해서 time slice를 다 썼는지를 계산하는지여부에 대한 질문이신거죠?
      우선 이 부분은 제가 내공이 부족해서 정확한 답변을 드리기가 조금 어려울 것 같아요. 그래서 지금부터 드릴 답변은 '그럴수도 있겠다' 정도로만 참고해주시면 좋을 것 같습니다.
      '제 생각'은 OS 구현 마다, 그리고 시스템콜이나 인터럽트의 종류에 따라 조금씩 다를 것 같아요.
      - 우선, blocking이 되는 시스템 콜(가령, I/O 작업 관련된 시스템콜)을 A 프로세스가 요청했다면, 다른 프로세스 혹은 스레드로 컨텍스트 스위칭이 발생하기 때문에, A는 주어진 time slice를 다 쓰지 않고 CPU를 빠져나오게 되구요
      - 혹은, 현재 시간을 알려주는 시스템콜을 A 프로세스가 사용했다면, running 중에 A 프로세스가 필요해서 시스템콜을 호출한 것이라서, 이 경우에는 해당 시스템콜을 수행하는 시간도 A 프로세스에게 할당된 time slice에 포함이 되서 계산이 될 것 같아요
      - 반면 A 프로세스가 실행 중인데 그 사이에 B 프로세스가 요청한 I/O 작업이 끝났다는 인터럽트가 발생했다면, 이 인터럽트를 처리하는 ISR 시간은 A에게 할당된 time slice에 포함되면 안될 것 같아요
      이 부분은 제 개인적인 생각이에요. 직접 소스코드를 본 적이 없고, 이 부분을 강의나 구글링을 통해 명시적으로 배운 적이 없다보니 참고만 해주시면 좋을 것 같습니다.
      p.s. 답변을 정확히 드리기 위해 구글링을 좀 해봤는데 관련 내용이 잘 보이지가 않네요.. 혹시 이후에 아시게 되면 공유 부탁드려요 :)

    • @user-ku3tg3xv5d
      @user-ku3tg3xv5d Před 2 lety +1

      @@ez. 와 정말 감사합니다 단순 호기심 때문이 물어본것인데 이렇게 정성적으로 답변해주시다니!! 감동입니다!! 감사합니다

    • @ez.
      @ez.  Před 2 lety +1

      @@user-ku3tg3xv5d 지금보다 규모가 더 커지면 자세히 답변드리고 싶어도 쉽지 않을 수 있어서 지금 할 수 있을 때 최대한 열심히 답변드릴려구요 ㅎㅎ
      호기심 발휘하시는 모습 멋지십니다!! 👍

    • @user-cs7io2db5p
      @user-cs7io2db5p Před 2 lety +2

      각 스레드의 퀀텀타임에는 인터럽트로 인한 시간 소비는 포함되지 않습니다!
      스케줄러에 의해 인터럽트 된 시간은 보정 받는걸로 알고 있습니다.
      결국 커널모드로 진입하는 비용이 비싼 이유는 유저모드에서 돌던 스레드가
      커널쪽 코드를 실행하기 위해 캐시메모리를 전부 바꿔야 하기 때문에 비용이 많이 들게 됩니다.
      유저모드 -> 커널모드로의 변경은 어쨋든 동일 스레드가 동작하는 것이기 때문에 퀀텀타임을
      소비하게 되지만 인터럽트로 인해 동작되지 않는 부분은 스케줄러에 의해 보정 받게 됩니다.

    • @ez.
      @ez.  Před 2 lety +1

      @@user-cs7io2db5p 오오 답변 감사합니다~!!
      역시 인터럽트는 포함이 되지 않는군요~
      여기서 인터럽트라고 할 때는 일부 시스템콜은 포함하지 않는거죠? 만약에, 예를 들어, 시간과 관련된 시스템콜을 처리할 때 소비된 시간들이 스레드의 퀀텀타임에 포함되지 않는다면, 하나의 스레드가 계속 시간관련 시스템콜을 호출하면 그 스레드는 꽤 오래 CPU에 상주하게 될 것 같아서, 그럼 멀티태스킹이 제대로 동작하지 않게 되는 것 아닌가 싶어요~
      그리고 또 하나 궁금한 것이 있어요ㅠ
      유저모드에서 커널모드로 갈 때 캐시메모리를 바꾸나요? 어느 한 프로세스에서 다른 프로세스로 컨텍스트 스위칭이 일어날 때는 CPU 캐시를 비우는 것으로 알고 있는데, 단순히 유저모드에서 커널모드로 변경한다고 CPU 캐시를 바꾼다는 것은 처음 들어본 내용이라서, 제가 잘못 알고 있었다면 이 부분을 다시 제대로 공부를 하려구요~
      아무래도 자료는 영어가 많다보니 관련 내용을 영문으로 구글링을 해봐도 잘 보이지 않아서 질문을 드리게 됐습니다
      혹시 참고할만 책이나 레퍼런스를 알려주시면 도움이 많이 될 것 같아요 :)
      좋은 답변 달아주셨는데 제가 질문이 많았네요ㅜㅠ
      그래도 이렇게 관심가져주시고 댓글 달아주셔서 정말 감사합니다!!👍