앞 영상 다 봤다면 공유 메모리 IPC는 덤

Поделиться
HTML-код
  • Опубликовано: 29 янв 2025

Комментарии • 41

  • @wjdeh10110
    @wjdeh10110 2 года назад +2

    설명 감사합니다! 앞에 설명하신 영상들 보고 이 영상을 보니까 엄청 쉽게 이해가 되네요!

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      피드백 감사합니다. IPC 쉽쥬?? (되도 않는 백종원님 성대모사 한번 날려봅니다. ^^;;;;)

  • @niceonsonny8236
    @niceonsonny8236 Год назад +1

    마지막 복붙이라니 이해가 확 되네요!

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  Год назад

      일상에서 사용했던 그 단순한 기능 속에 참 많은 것이 들어있지요. :)

  • @Melanie-fz7qq
    @Melanie-fz7qq 2 года назад +1

    와 이해가 너무 잘됩니다!! 바쁘실텐데 좋은 영상 올려주셔서 감사합니다~ 구독자 벌써 23000명 돌파했네용 축하드려요~~

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад +1

      좋은 평가와 피드백 감사합니다. 앞으로 더 열심히 달려보겠습니다. ^^

  • @Shane1994322
    @Shane1994322 Год назад

    와 이해됐습니다!! 프로세스는 독립된 가상 메모리를 보장받는데, 두 프로세스 간의 가상메모리가 가르키는 물리 메모리 주소가 같다면, 서로 데이터 공유가 가능하다! 세부적인 디테일은 더 찾아봐야알겠지만, 절대 까먹지 않을 것 같네요. 감사합니다!!

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  Год назад

      이해도 잘 되셨다니...강사로써 기쁜 소식입니다. 좋은 평가와 피드백 고맙습니다. :)

  • @Zzang99-x4s
    @Zzang99-x4s 10 месяцев назад +1

    와 운영체제 곰책 보시는 분들 중에 가상메모리 공부하시는 분들은 이거 꼭 보면 좋겠네요(1~4편까지 정주행했습니다)

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  9 месяцев назад

      이런 정리와 피드백 너무 고맙습니다. 열공하시고 좋은 결과 얻으세요. :)

  • @kangminkim37
    @kangminkim37 2 года назад +2

    간단하게 복붙시 내부 작동원리를 설명해 주셔도 재밌겠네요ㅎㅎㅎ

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад +2

      이 영상이 그 설명이긴 한데...코드 수준에 조금 더 자세히 설명을 드리면 될까요?? 의견 주시면 영상으로 답변해드리겠습니다. 감사합니다. ^^

    • @kangminkim37
      @kangminkim37 2 года назад

      @@nullnull_not_eq_null 제가 다시 한 번 영상을 꼼꼼히 보겠습니다!
      감사합니다~

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад +1

      음...그래도 이해 안되시면 꼭 다시 알려주세요. ^^

  • @nullpointerexception119
    @nullpointerexception119 2 года назад

    15년도에 선생님의 C 강의를 들었던 학생입니다.
    이렇게 유튜브에서 다시 뵙게되었네요 ㅎㅎ
    귀중한 강의 공유해주셔서 감사합니다~!

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад +1

      아하~~! 그렇군요. 시간이 참 많이 흘렀네요. 저도 다시 보게되어 반갑습니다. ^^

  • @davidkwon8223
    @davidkwon8223 2 года назад +8

    감사합니다 !
    - IPC의 대표적인 예시 = 복붙
    - process는 개별적인 VM을 소유하고, 서로 독립적이기 때문에 process A가 process B의 VM을 write/read할 수 없다.
    - 하지만 OS는 복수의 process가 RAM/HDD 차원에서 하나의 page를 바라보도록 mapping할 수 있다
    - 복수의 process가 하나의 page를 바라보면, IPC를 구현할 수 있다
    - (1) process A가 A의 VM에 value를 write한다
    - (2) process B가 (1)의 event를 listen한다
    - (3) process C가 page의 value를 read한다

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      네, 그렇습니다. 이 때문에 멀티스레딩 환경도...동기화도 중요해지죠. ^^

    • @젤리껌
      @젤리껌 2 года назад

      IPC / sharedmemory / 복붙이 Virtual Memory를 기반으로 동작하고 있었다니;;;
      정말 원리를 알고보니 너무 재밌네요~!!ㅎ

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      피드백 감사합니다. ^^

  • @hm-xh1ju
    @hm-xh1ju 2 года назад +2

    프로세스는 서로 독립적이고 가상메모리 역시 마찬가지다. 그래서 보통 서로 영향을 끼치지 않는데 공유 메모리를 사용할때가 있다. (OS가 할당)
    그 예가 바로 복붙!!
    예시 말씀 해주시니 이해가 쏙쏙 잘 돼요. 잘 보고갑니다!

  • @jaidka
    @jaidka 2 года назад +1

    재밌네요 컴공학부생인데 배우면서 느낀게 지금 제가 배운 시스템이 어떻게 개발이됬고, 진행이 됬고, 바뀌었는지 궁금했습니다. 영상들을보고 방향을 알았습니다.

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      피드백 감사합니다. 강의가 도움이 된 것 같아 기분 좋습니다. ^^

  • @Han-oq9ly
    @Han-oq9ly 2 года назад

    안녕하세요 개발자님! 디테일한 개념을 이해하기 쉽도록 설명해주셔서 정말 도움을 많이 받고 있습니다. 독학 중인 학생으로서 진심으로 감사드려요!
    어느정도 만족할 만큼 개념 정립이 안 되는 부분이 있는데, 혹시 영상 등을 통해 답변해주실 가치가 있다고 생각되면 죄송한 마음으로 부탁드리고자 댓글을 남깁니다.
    궁금한 부분은 크게 두 가지입니다.
    1. null포인터 역참조에 관한 궁금증
    2. 프로세스의 exit혹은 메인문 return 전 메모리 free에 대한 best practice
    입니다.
    우선 1번 궁금증은 보안에 관한 궁금증입니다.
    alloc함수들이 제대로 할당이 되었는지 체크 및 처리하는 가장 큰 이유에 대해 null포인터 역참조를 방지하기 위해서라고 알고 있습니다.
    그리고 null 포인터 역참조를 방지하는 이유는 보안상으로 치명적인 행동이기 때문이라고 공부하였습니다.
    여기에서 두 가지 의문이 생깁니다.
    첫째는, null포인터 역참조가 발생되면 프로세스가 뻗어버리는데 그것을 우회하여 공격하는 방법이 있는가? 혹은 아직 null 역참조와 같은 정의되지 않은 동작에 대해 더욱 신경써야하는 플랫폼이 있는가? 입니다.
    그리고 둘째는, 만약 공격이 가능하다면 가상메모리 넘어 os나 다른 프로세스에도 영향력을 행사할 수 있는가?
    만약 행사할 수 없다면 그것은 구조적, 논리적으로 완벽하여 추후에도 그럴 가능성은 전혀 없는가.
    혹은 가상메모리가 구현되지 않은 플랫폼이 아직 있는가? 입니다.
    결론적으로, 프로세스가 보안상의 유의미한 데이터를 지니고 있지 않고, 또 중간에 동작을 멈추어도 상관 없고, 다른 프로세스와 유기적으로 동작하지 않는 프로그램이라면 의도적인 null포인터 역참조에 대한 방어를 하지 않아도 되는가에 대해 궁금합니다.
    (이유를 명확히 알고 방어적인 코드를 작성하고 싶어서 그렇습니다! 저런 안일한 태도를 가지겠다는 의미는 아닙니다ㅜ)
    2번 궁금증은 어떠한 행동이 더 효율적인가에 대한 의문입니다.
    현재의 os는 프로세스가 종료되는 순간 할당되었던 메모리가 모두 해제되는 것으로 알고 있습니다.
    프로세스 종료 직전까지 할당되어있어야 하는 데이터가 있다면 경우에 따라 free시키지 않고 종료되는 것이 더 낫지 않나,에 대한 궁금증입니다.
    만약 종료 전까지 한참을 대기 상태에 있을 수 있는 프로세스라면 굳이 메모리 주소를 받아와서 free시키는 연산을 하는 것이 적절한 행동인지에 대해 궁금합니다.
    질문이 장황하여 죄송합니다ㅜㅜ
    양질의 컨텐츠들에 대해 다시 한 번 감사드립니다!!

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад +1

      1. 그렇긴 하겠으나 만성 런타임 오류를 피할 수는없을 것 같습니다.
      2. 효율의 문제를 논할 사안이 아닙니다. 보안이슈를 비롯해 여러 문제를 고민한다면 메모리 해제는 늘 반드시 해야 하는 것입니다.
      열공하세요~~!

  • @젤리껌
    @젤리껌 2 года назад

    혹시 추후에 시스템관련해서 윈도우즈에서 바라보는 BIOS / ACPI / PnP / UEFI에 대한 내용도 기대해도 되나요~??;;;ㅎㅎ

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад +1

      음...윈도우 프로그래밍에서 언급한 내용을 다뤘던 경험은 없습니다. 다만 자료는 하나 소개해드려야 할 것 같네요. ^^

  • @이성구-z9e
    @이성구-z9e 2 года назад

    궁금한게 있는데 커널은 Os라는 시스템 프로그램의 프로세스인가요??? 커널의 실체가 무엇인지 궁금합니다.
    추가로 또 궁금한점이 있는데 프로그램의 실행단위가 프로세스이고 프로세스는 PCB같은 자료구조라고 알고 있습니다. 이 PROCESS CONTROL BLOCK과 가상메모리와의 관계가 연결이 안됩니다. 검색해도 나오지가 않아서요 ㅠㅠㅠ
    감사합니다

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      음...그냥 '프로그램'입니다. 가장 큰 차이는 하드웨어가 실행해주고 밀접하게 결합되어 작동한다는 점이 다르다 하겠습니다. 그리고 PCB는 프로세스에게 주어지는 '보급품' 같은 것입니다. 프로세스가 PCB는 아닙니다. 그리고 가상 메모리와 연결할 필요도 없습니다. ^^

  • @파마셀2
    @파마셀2 2 года назад +1

    선생님 현재 제가 개발한 프로그램 C# WinForm 프로그램에서 장비업체의 라이브러리를 로드하면서 갑자기 프로세스가 죽는현상이 발생하는데 해당 라이브러리(C++ 라이브러리)에서 다른 프로세스의 메모리를 침범해서 OS에서 프로세스를 Kill할수 있다고 봐도 될까요? 이벤트뷰어를 보니 clr.dll 에러가 발생하는것까지는 확인하였습니다. 이런 좋은영상 매우 감사드립니다!

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад +2

      C/C++ 코드의 가장 흔한 오류는 1. 메모리 오류, 2. 권한 없는 명령 수행 입니다.
      이것 말고도 무수히 많지요. 따라서 주신 정보만으로는 원인을 특정할 수 없습니다.
      장비업체가 사용했던 것과 적용한 닷넷 프레임워크 버전이 달라서 생기는 문제일 수도 있으니 확인은 해보시기 바랍니다.

    • @파마셀2
      @파마셀2 2 года назад

      @@nullnull_not_eq_null 댓글 감사합니다 선생님!

    • @파마셀2
      @파마셀2 2 года назад

      @@nullnull_not_eq_null CallingConvention 문제였네요 특정 PC에서만 발생하는게 의문이긴 한데 해결은 되었습니다.

  • @갈가마구
    @갈가마구 2 года назад

    윈도우는 공유 버퍼가 하난데, 이놈의 리눅스는 하나가 아니드라구요...그래서 vim쓸때 이게 또 문제를 일으켜서
    아놔 이거 가지고도 한참 헤멨었는데....
    혹시 조기 IPC부분에서 도 동기화가 문제가 될수도 있겠죠? 그럴거 같은데 하하...
    감사합니다.

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      음...윈도우도 뜯어보면...윈도우 스테이션 객체라는 놈이 튀어 나옵니다. ^^
      뭐 거기까지 생각하면 조금 피곤하긴 합니다만...
      IPC에서 동기화는 필수입니다. 운이 나쁘면 시스템 성능저하까지 유발할 수 있지요.

  • @topmm4248
    @topmm4248 2 года назад

    안녕하세요. 메모리 관련해서 영상을 보다 보니 궁금한 점이 있어 질문드려요
    PNG처럼 압축되어 있는 이미지가 가상 메모리(힙이나 스택)에 올라갈 때
    압축된 용량으로 올라가는건가요? 아니면 원본 비트맵 사이즈로 올라가는걸까요?
    이미지 관련해서 검색해봐도 압축은 저장 용량을 줄이기 위한거고 실제로 메모리에
    올라갈 떈 원본으로 올라간다는 얘기가 있어서 이 부분이 좀 헷갈리네요ㅠ
    가상 메모리엔 압축된 용량 > GPU로 넘어가서 처리될 때 원본 사이즈인건지
    그렇다면 가상 메모리에서 GPU로 넘어갈 시 데이터가 복사되어 넘겨져 처리되는건지 궁금합니다ㅠ

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      '실제로 메모리에 올라간다 '라는 부분에서 메모리를 비디오 메모리 일 수도 있겠습니다. 그리고 결국 다 Bitmap으로 변환된 후 처리합니다.

    • @topmm4248
      @topmm4248 2 года назад

      @@nullnull_not_eq_null 아하 답변감사합니다ㅎ그럼 이미지는 메모리에 할당될 때 렘이 아닌 GPU 메모리에 할당될 수 있다는걸까요? 항상 메모리 관련해서 공부하려 찾아봐도 램이나 가상메모리만 나와서 GPU 메모리 부분의 어떻게 활용되는지 이해가 잘 안되더라구요ㅠ 그럼 결국 램이랑 GPU 메모리 중에 그래픽으로 처리해야되는 이미지나 애니메이션 같은 경우는 OS가 알아서 GPU 메모리에 할당한다 생각하면 되는걸까요? 실제 메모리에 올라간다라는 부분은 예를들어 앱 사진첩에서 사진을 불러 화면에 보이게 불러왔을 경우 불러온 사진 이미지가 어느 메모리에 할당되는건지가 궁금했습니다ㅜ

    • @nullnull_not_eq_null
      @nullnull_not_eq_null  2 года назад

      아래 링크에서 '그래픽 메모리 칩(모듈)'부분을 확인해보기 바랍니다.
      namu.wiki/w/%EA%B7%B8%EB%9E%98%ED%94%BD%20%EC%B9%B4%EB%93%9C

    • @topmm4248
      @topmm4248 2 года назад

      @@nullnull_not_eq_null 감사합니다ㅎ