안녕하세요. 백준 chogahui05입니다. Vector는 ArrayList와 다르게, 주요 메서드에 synchronized가 붙은 클래스입니다. 여기서 질문 하나 드리겠습니다. 다음 코드는 어떻게 동작할까요? 쓰레드 n개를 생성했다고 해 봅시다. 그러면 이 프로그램은, 항상 비어있는 벡터를 리턴할까요? 혹은, 항상 제대로 동작할까요? vector는 ArrayList와는 다르게 주요 메서드에 동기화 처리가 되어 있습니다. 이는 StringBuilder와 StringBuffer와의 관계와도 같습니다. 전자는 동기화 처리가 되어 있지 않고, 후자는 되어 있다. 정도로 이해하시면 됩니다. 실제로, Worker 클래스의 run 메서드 안에 있는 메서드 3개를 봅시다. isEmpty는 elementCount가 0..
OS 검색 결과
파일에는 소유권이 있습니다. 어느 그룹이 소유하고 있는지, 그리고 누가 소유하고 있는지. 이 둘을 바꾸는 명령어가 chown입니다. .c 파일들은 chogahui05가 소유하고 있고, chogahui05 그룹이 소유하고 있습니다. 권한은 -rw-rw-r--입니다. 그러면, 05 그룹이거나, 05인 경우에는, Read와 Write가 모두 가능하고, 그렇지 않으면 읽기만 가능하다는 이야기입니다. 현재 user는 chogahui06입니다. groups를 쳐 보면, chogahui06만 나오는데요. 06은 05도 아니고, 05 그룹에 속해있지도 않기 때문에 others에 속합니다. 그러면, strcpy.c를 열면 어떻게 될까요? 읽기 전용으로 열릴 거에요. 당연한 이야기입니다. Write 권한이 없기 때문입니다..
All or nothing. 원자성이라고 이야기를 합니다. 어떠한 연산이 들어왔을 때, 실행이 되거나, 그렇지 않거나. 둘 중 하나의 상태가 되어야 합니다. 데이터 베이스에서 '트랜잭션' 이라는 것을 배우면 ACID라 해서 나오는 용어이기도 합니다. 아마, 그것을 배우시면 이런 그림도 많이 보셨을 거라 생각합니다. Commit은 Q가 반영이 된 상태를, Abort는 Q가 반영이 되지 않은 상태를 의미합니다. 만약에 Q를 execute 하라는 명령이 들어왔는데, 잘 수행하다가 실패한 경우에는 Fail로 가야 할 겁니다. 이 경우에는, 부분적으로 수행했던 명령들이 결과에 반영되면 안 됩니다. 잘 수행이 된 경우에는 둘 중 하나입니다. 취소를 하던지, 반영을 하던지. 그러면, 위에서 말하는 '원자성'이 깨지는..
리눅스에서 ls -ail 명령어를 쳐 보면, 앞에 10자리의 이상한 문자열이 온다는 것을 알 수 있어요. 그리고, 우리는 권한 755를 준다. 664를 준다. 이런 말도 많이 하고요. 이게 무엇을 의미하는지 천천히 보도록 하겠습니다. home 디렉토리에서, ls -ail 명령을 입력해 보았습니다. 먼저, 앞에 오는 것을 빼고 3자리씩 끊어서 읽으시면 되는데요. 예를 들어 283269번 파일은 rwx, ---, --- 이렇게 온다는 것을 알 수 있습니다. 이는 소유자 chogahui05에 대해서만 Read, Write, eXecute가 허용이 되고, 소유자가 아닌, 그룹 chogahui05에 속한 유저들이나, 다른 사람들이 Read, Write, eXecute 할 수 없다는 의미입니다. chogahui06..
Thread에서, stop, suspend, resume, destroy는 권장하지 않는 함수라는 것은 알고 계실 겁니다. 이 중에서, 오늘은 중간에 있는 두 메서드인 suspend랑 resume에 대한 이야기를 먼저 해 보도록 하겠습니다. 먼저 이 그림은 stop을 할 때에도 그려놓고 있는 것이 좋겠습니다. 여기서 중요한 것은 resume의 대상이, suspend된 상태에서만 쓸 수 있습니다. 이는 링크에 나온 이 문구를 보면 대략적으로 알 수 있습니다. solely라는 말은, 단지라는 부사입니다. solo랑 비슷한 어감일지도 모르겠어요. 영어를 잘 못해서, 정말 그런지는 잘 모르겠습니다. 혹이 이에 대해 아시는 분 있으면 댓으로 알려주시면 감사하겠습니다. 어찌 되었던 문맥상, suspend를 썼을 때..
최근댓글