실용주의 프로그래머 TIL 9일차

최정환·2022년 3월 30일
0

pragmatic-programmer

목록 보기
9/13


TIL (Today I Learned)

2022.03.29 ~ 30

오늘 읽은 범위

6장.동시성

🎨 책에서 기억하고 싶은 내용을 써보세요.

  • 250p

    문제는 두 프로세스가 같은 메모리 영역에 쓰기가 가능하다는 점이 아니다. 문제는 어느 프로세스도 자신이 보는 메모리가 일관되어 있음을 보장할 수 없다는 점이다 따라서 정보를 가져오고 생신하는 동작은 원자적(atomic)이어야한다.


    예를 들면 케이크가 한조각 있는데 점원 2명이 그것을 보고 주문을 받고 하나가 나가면 한명은 고객에게 실수를 하게 될 수 있다.

  • 251p

    세마포어semaphore는 단순히 한 번에 한 사람만이 가질 수 있는 무언가

    다른 리소스의 사용을 제어하는 데 쓸 수 있다.

    세마포어를 확보한 쪽은 평소 처럼 계속 진행한다.
    세마포어를 얻지 못한 쪽은 세마포어를 얻을 수 있을 때 까지 멈춰 있는다.
    즉, 기다린다.


    세마포어라는 개념을 알게 되었다.객체의 value? key?의 성질을 섞어 놓은 것같다.

  • 259p

    액터는 언제나 동시성을 띤다.

    1. 액터를 관리하는 것이 하나도 없다.
    2. 시스템이 저장하는 상태는 오직 메시지 그리고 각 액터의 지역 상태뿐이다.
    메시지는 수신자가 외엔 접근하지 못하고 지역 상태는 액터 밖에선 접근 불가능이다.

    3. 모든 메시지는 일방향이다. 답장이란 개념은 없다.
    4. 액터는 각 메시지를 끝날 때까지 처리하고 중간에 다른 일을 하지 않는다.
    즉, 한 번에 하나의 메시지만 처리한다.


    https://ko.wikipedia.org/wiki/%ED%96%89%EC%9C%84%EC%9E%90_%EB%AA%A8%EB%8D%B8

  • 260p

    간단한 액터를 구현해 본다
    고객customer, 종업원 waiter, 진열장pie case 이렇게 세 가지 액터가 있다.

    자바스크립트의 객체는 맵처럼 사용할 수 있는데, 객체의 키에 액터가 받을 메시지를 지정하고, 값에 해당 메시지가 도착했을 때 실행 할 함수를 지정한다.

    이 객체를 래퍼 함수에 넘기면 액터를 만들어 준다.
    코드는 책 261부터 나온다



    자바스크립트 코드라 그런지 이해하는데 수월했다. 코드와 설명을 같이 보니 액터라는것에 대해 조금이지만 이해할 수 있었다

🍋 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

새로운 컴퓨터 관련 개념이 나오면서 이해하기가 힘들었다. 잘 쓰지도 않고 생각도 안해봤던 내용이라 그런것같다.

처음 리소스를 제어한다고 하면서 메모리를 관리한다고 할때 c의 포인터가 생각나며 머리가 약간 지끈거려서 더 이 책에서 말하는 내용만 그대로 읽고 넘어가기로 했다.

분명 도움이 되는 개념은 맞지만 내가 사용할 일이 있나 의심된다.

🧐 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

트랜잭션 : 데이터베이스 내에서 한꺼번에 수행되어야할 일련의 연산
https://sung0woo.tistory.com/69

상호 배제mutual exclusion를 의미하는 뮤텍스mutex :
멀티 프로그래밍에서 공유불가능한 자원의 동시사용을 피하기 위해 사용하는 알고리즘

뮤텍스

-259p
액터 : 자신만의 비공개 지역 상태state를 가진 독립적인 가상 처리 장치

각 액터는 우편함mailbox을 하나씩 보유하고 있다. 액터가 잠자고 있을 때 우편함에 메시지가 도착하면 액터가 깨어나면서 메시지를 처리한다. 처리가 끝나면 우편함의 다른 메시지를 처리한다. 만약 우편함 이 비어 있으면 다시 잠든다.
메시지를 처리할 때 액터는 다른 액터를 생성하거나, 알고 있는 다른 액 터에게 메시지를 보내거나, 다음 메시지를 처리할 때의 상태가 될 새로운 상태를 생성할 수 있다.

뮤텍스와 세마포어의 차이

0개의 댓글