인터럽트와 시스템 콜을 설명합니다! 당연히 유저 모드, 커널 모드도 설명해야겠죠? 그런데 이 모든게 프로그래밍 언어와 무슨 상관이냐구요?? 상관있죠! 왜 상관있냐면요..!
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
쓰레드에 대해 공부하는데, 설명이 진짜 잘 되어있어서 공부하기 편했습니다! 이런 강의 만들어주셔서 감사합니다 :)
쉬운 코드님의 영상을 볼 때마다 울림이 있네요 감사합니다
비싼 대학강의를 쉽게 잘 알려주시네요; 감사합니다.
채널 이름값 해야죠 ㅎㅎ 댓글 감사합니다 :)
영상들이 퀄리티가 높고 설명도 잘해주셔서 이해가 잘 됩니다. 많은 도움이 되었습니다. 채널 떡상하길 기원할께요~
우아~ 칭찬 피드백 주셔서 정말 감사합니다~! 열심히 만든 보람이 있어서 뿌듯하네요 :) 계속해서 좋은 영상으로 찾아뵐게요~!!
퀄리티 어마어마합니다. 영상 하나 만드는데 투자하시는 정성과 노력이 느껴지네요
크~~ 감사합니다
맞습니다 실은 정말 많은 노력을 하고 있는데요,
보시는 분들이 조금이라도 더 쉽게 이해하셔서 좋은 개발자로 성장하실 수 있으면 좋겠네요 👍
와 진짜 완전 쉽게 잘 이해되는 설명이에요 최고..!
흐흐 감사합니다! 앞으로도 계속해서 채널 이름값 하도록 하겠슴당!! ^^7
3시간 강의들으면서 애매했던 부분들이 15분만에 해결 뚝딱
yeah~!! nice~!!
정말 감사합니다. 운영체제 재생목록 정주행 중인데 몰랐던 부분들이 전부 이해되네요! 감사합니다!
크~! 도움이 된 것 같아서 기분이 좋네요 ㅎㅎ
앞으로도 유익한 영상으로 인사드릴게요 :)
인터럽트에 의한 cpu 스케쥴링과 시스템콜까지 종합적으로 이해가 쏙쏙 됩니다👍
크~~ 영상이 쏙쏙 이해돼서 다행입니다 👍
진짜 헷갈렸는데 이해가 되었습니다 ㅠㅠ 감사합니다!!!!!!
도움이 될 수 있어서 다행입니다 :)
댓글 감사합니다 👍
내용이 너무 좋네요 ㅎㅎㅎ 마침 시스템 프로그래밍 공부하고 있었는데 많은 도움이 됐습니다. 채널이 곧 떡상하실거 같아요. 잘보고 갑니닷!
와우와우! 너무너무 기분 좋은 댓글이네요~!!ㅎㅎ 많은 도움이 됐다니 저도 많이 뿌듯합니당ㅎㅎ 앞으로도 자주자주 시청해주세용~ㅎㅎ 새해 복도 많이 받으시구용 :)
감사합니다~ 최고입니다!
우리 모두 최고입니다!! 위 아 더 베스트 올 투게더!!
잘 보고 갑니다 ㅎ
댓글 감사하옵니다~ 새해 복 많이 받으세요 :)
설명 너무 좋네요~
크 감사합니다~! 이런 댓글은 정말 큰 힘이 되네요~!ㅎㅎ 더 좋은 영상으로 찾아뵐게요 :)
내용 정말 알찬데 알고리즘이 아직 잘 미치지 않는 거 같아서 아쉽네요ㅠㅠ 대신 주변 분들한테 추천하고 있어요ㅎㅎㅎㅎ 매번 좋은 영상 감사해요~!
@@kimlee2331 우와ㅠㅠ 감동입니다 ㅠㅠ 정말 정말 감사합니다!! 꾸준히 양질의 콘텐츠를 올리면 언젠가 더 많은 분들에게 닿을 수 있겠죠?ㅎㅎ 저도 계속 화이팅할게요!!
설명 지긴다😊
최고입니다
덕분입니다
9:24 여기에서 파일을 읽을 준비가 됬다는 말이 ssd에서 메모리로 가져왔다는 건가요?
질문 하나 드립니다 !! 하드웨어 인터럽트가 알림과 같은 부분이라면 시스템 콜은 커널 모드로 진입하여 하드웨어를 사용하기 위한 수단이라고 보면 될까요 ??
반갑습니다 :) 시스템콜들 중에 일부는 말씀하신 것처럼 하드웨어를 사용할 목적으로 존재하고요, 하지만 그 외에도 가령 프로세스나 스레드를 생성한다거나 등등 하드웨어 외의 목적으로 존재하는 것들이 있습니다
안녕하세요! 혹시 커널모드에서 유저모드로 왔다 갔다 하기 위해서 cpu상태 저장하고 복구하는 것도 컨텍스트 스위칭이라고 할 수 있나용? (입출력 끝났다고 인터럽트 왔을때)
반갑습니다 :)
네 맞습니다~! 상황에 따라서는 유저모드와 커널모드를 스위칭하는 것도 컨텍스트 스위칭이라고 할 수 있을 것 같아요~
혹시나 해서 저도 좀 더 검색해봤는데 위키에도 비슷한 내용이 있어서 참고하실 수 있게 남겨 놓을게요 :)
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
@@ez. 우왁 감사합니다
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아이가 울면 인터럽트 ㅋㅋㅋㅋㅋ.
그러면 저는 " 엄마가 잔소리하면 인터럽트"!!!!
앜ㅋㅋㅋㅋㅋㅋㅋ 새해에는 작년보다 인터럽트가 적게 발생하길요 ㅠㅠㅋㅋㅋ
궁금한게 있습니다 interrupt나 system call로 kernel 들어갈때 ISR을 돌고 오는걸로 아는데 아무리 짧다고 하지만 시간을 아예 안쓰지는 않는것으로 알고 있습니다 그러면 이 시간도 시분할 시스템에서 timer에 포함이 되는 건가요? 만약 그렇다면 아무리 짧다고 하지만 running상태에서 수행중인 프로세스에서 여러번 interrupt가 발생하여 시간을 뺏긴거니까 안좋은거 아닌가요? 두서 없는데 interrupt/system call로 kernel 들어가서 isr을 실행할때 running 상태의 timer시간을 쓰는지 안쓰는지 아니면 kernel들어갈때는 timer가 멈추는것인지 궁금해서 댓글 남겨봅니다
안녕하세요~
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. 답변을 정확히 드리기 위해 구글링을 좀 해봤는데 관련 내용이 잘 보이지가 않네요.. 혹시 이후에 아시게 되면 공유 부탁드려요 :)
@@ez. 와 정말 감사합니다 단순 호기심 때문이 물어본것인데 이렇게 정성적으로 답변해주시다니!! 감동입니다!! 감사합니다
@@user-ku3tg3xv5d 지금보다 규모가 더 커지면 자세히 답변드리고 싶어도 쉽지 않을 수 있어서 지금 할 수 있을 때 최대한 열심히 답변드릴려구요 ㅎㅎ
호기심 발휘하시는 모습 멋지십니다!! 👍
각 스레드의 퀀텀타임에는 인터럽트로 인한 시간 소비는 포함되지 않습니다!
스케줄러에 의해 인터럽트 된 시간은 보정 받는걸로 알고 있습니다.
결국 커널모드로 진입하는 비용이 비싼 이유는 유저모드에서 돌던 스레드가
커널쪽 코드를 실행하기 위해 캐시메모리를 전부 바꿔야 하기 때문에 비용이 많이 들게 됩니다.
유저모드 -> 커널모드로의 변경은 어쨋든 동일 스레드가 동작하는 것이기 때문에 퀀텀타임을
소비하게 되지만 인터럽트로 인해 동작되지 않는 부분은 스케줄러에 의해 보정 받게 됩니다.
@@user-cs7io2db5p 오오 답변 감사합니다~!!
역시 인터럽트는 포함이 되지 않는군요~
여기서 인터럽트라고 할 때는 일부 시스템콜은 포함하지 않는거죠? 만약에, 예를 들어, 시간과 관련된 시스템콜을 처리할 때 소비된 시간들이 스레드의 퀀텀타임에 포함되지 않는다면, 하나의 스레드가 계속 시간관련 시스템콜을 호출하면 그 스레드는 꽤 오래 CPU에 상주하게 될 것 같아서, 그럼 멀티태스킹이 제대로 동작하지 않게 되는 것 아닌가 싶어요~
그리고 또 하나 궁금한 것이 있어요ㅠ
유저모드에서 커널모드로 갈 때 캐시메모리를 바꾸나요? 어느 한 프로세스에서 다른 프로세스로 컨텍스트 스위칭이 일어날 때는 CPU 캐시를 비우는 것으로 알고 있는데, 단순히 유저모드에서 커널모드로 변경한다고 CPU 캐시를 바꾼다는 것은 처음 들어본 내용이라서, 제가 잘못 알고 있었다면 이 부분을 다시 제대로 공부를 하려구요~
아무래도 자료는 영어가 많다보니 관련 내용을 영문으로 구글링을 해봐도 잘 보이지 않아서 질문을 드리게 됐습니다
혹시 참고할만 책이나 레퍼런스를 알려주시면 도움이 많이 될 것 같아요 :)
좋은 답변 달아주셨는데 제가 질문이 많았네요ㅜㅠ
그래도 이렇게 관심가져주시고 댓글 달아주셔서 정말 감사합니다!!👍