목록전체 글 (123)
Written by coh at home
원래 이렇게 TIL 자세히 쓰는 거 좋아하지 않지만 운체 배울 때 배속으로 들어서 그런가 이해가 한 번에 안 되었음 ㅋㅋ 특히 process가 N개 일 때.. 그래서 나중에 또 잊어버릴 수도 있을 거 같아서 좀 자세히 정리하려고 함. Introduction 어떤 도화지가 있을 때 a가 거기에 그림을 그리고 b가 그 위에 그림을 그린다면 엉망이 될 것이다. 따라서 a, b는 서로 대화를 해서 약속을 정해야할 것이다. 즉, 정보를 공유하고 동작을 맞춰야 할 것이다. 이를 multi programming system에서의 syncronization이라고 한다. 프로세스들은 서로 어떻게 동작하는지 모른다. 비동기적인데 시스템에는 Concurrent 하게 여러 개의 프로세스들이 존재한다. 자원을 공유할 때 문제가..

c++의 변수 종류에 참조 변수라는 개념이 추가된다. 일반변수, 포인터변수, 참조 변수... 참조변수란 대체 무엇일까? 그냥 &를 이용해서 a의 또다른 이름을 만든다고 생각해도 된다. c를 출력해보면 10을 출력하게 되고 포인터변수처럼 asterisk를 이용하지 않아도 된다. 그래서 코드를 보면 상당히 직관적이고 간결하다. 참조변수는 그럼 메모리의 어디에 저장될까? 그건 user가 알 수 없다. 그래서 별도 실존하는 것이 아니라고 여겨진다. 음.. &c를 출력해보면 &a와 같이 나오게 되고 c가 참조하는 값은 immutable하다. 축소변환. narrowing conversion 음.. c++부터 변수 초기화 방식으로 {}를 사용하게 된다. 이 때 축소변환으로 초기화를 하게 되면 error 가 발생하게 ..
도대체 c++에서 왜 객체를 쓰는 걸까. cout과 cin을 왜 객체로 모델링 했을까. 그냥 printf scanf 쓰면 되는 거 아닌가. 버퍼입력을 사용하기 때문에 그렇다. 표준입력을 std::cin >> n cin은 버퍼가 비어있는지를 보게 되고 입력한 데이터를 모두 버퍼로 옮기게 된다. 우리가 입력에 10 20 30 40 50 엔터를 치게 되면 1 0 공백 2 0 공백 전부 차례로 들어가게 된다 n의 type이 정수이므로 cin은 10을 저장하게 될 것이고 나머지는 여전히 버퍼에 남아있게 된다. 그래서 우리가 이 경우 두 번째 정수 데이터를 받으려고 하면 우리가 입력을 하기 전에 버퍼에 들어가 있는 20을 받게 되고 white space에서 짤라준다. 나머지 30 40 50은 여전히 버퍼에 남아있다..