핀토스 프로젝트2 시스템콜 구현 중
시스템 콜 구현 중 파일 읽기 시 lock을 사용한 코드를 보았다.
int
read (int fd, void *buffer, unsigned size) {
check_addr_validity(buffer);
if (!(0 <= fd < FD_LIMIT)) return -1;
int readsize;
if (fd == STDIN_FILENO) {
char c;
unsigned char *buf;
for (readsize = 0; readsize < size; readsize++) {
*buf = input_getc();
if (*buf == '\n') break;
else buf++;
}
}
else if (fd == STDOUT_FILENO)
return -1;
else {
struct thread *t = thread_current();
struct file *file = t->fdt[fd];
lock_acquire(&filesys_lock); // 이 부분
readsize = file_read(file, buffer, size);
lock_release(&filesys_lock); // 이 부분
}
return readsize;
}
Pintos에서는 lock이 굳이 필요가 없을 것 같아서 생각을 정리해보았다.
그래서 나는 lock을 안 썼다.