2012. 1. 4. 21:18
프로세스 관리 - 파일시스템 & 파일 OS이야기2012. 1. 4. 21:18
각 프로세스는 자신이 실행되고 있는 파일시스템에 대한 정보와 파일에 대한 정보를 유지함
struct fs_struct {
atomic_t count;
rwlock_t lock;
int umask;
struct dentry *root, *pwd, *altroot;
struct vfsmout *rootmnt, *pwdmnt, *altrootmnt;
}
프로세스가 종료될 때는 exit_fs() -> __exit_fs()함수를 호출해서 이 구조체에 대한 정보를 제거
#define __exit_fs() task_lock(current); current->fs =NULL; task_unlock(current);
files_struct 구조체는 프로세스에서 파일을 열면 그에 해당하는 정보를 관리한다.
프로세스가 종료될 때는 exit_files() ->__exit_files() 함수의 호출순서로 호출
static inline void __exit_files(struct task_struct *task)
{
struct files_struct files = task->files;
if(files)
{
task_lock(task);
files = NULL;
task_unlock(task);
put_files_struct(files); //NULL인데?
}
}
struct fs_struct {
atomic_t count;
rwlock_t lock;
int umask;
struct dentry *root, *pwd, *altroot;
struct vfsmout *rootmnt, *pwdmnt, *altrootmnt;
}
프로세스가 종료될 때는 exit_fs() -> __exit_fs()함수를 호출해서 이 구조체에 대한 정보를 제거
#define __exit_fs() task_lock(current); current->fs =NULL; task_unlock(current);
files_struct 구조체는 프로세스에서 파일을 열면 그에 해당하는 정보를 관리한다.
프로세스가 종료될 때는 exit_files() ->__exit_files() 함수의 호출순서로 호출
static inline void __exit_files(struct task_struct *task)
{
struct files_struct files = task->files;
if(files)
{
task_lock(task);
files = NULL;
task_unlock(task);
put_files_struct(files); //NULL인데?
}
}
'OS이야기' 카테고리의 다른 글
프로세스 생성 (2.4) (0) | 2012.01.04 |
---|---|
프로세스 관리 - execv() fork() (0) | 2012.01.04 |
C 컴파일러 과정 (0) | 2012.01.04 |
페이지 벡터 (0) | 2012.01.04 |
LRU/k (0) | 2012.01.03 |