목차
■ 리눅스란 무엇인가?
■ GNU는 무엇인가?
■ 리눅스의 특징
■ 명령해석기 : 쉘(shell)
■ Linux Kernel은 무엇인가?
■ 프로세스의 모습은?
■ 여러개의 프로세스는?
■ Thread는 어떻게 구현되어 있는가?
■ 프로세스 상태변화의 특이점?
■ Fork()의 문제점 및 해결방법은?
■ Zombie는 어떤 상태인가?
■ Scheduler의 모습은?
■ 동적 우선순위는 어떻게 부여되는가?
■ 동적 Timeslice는 어떻게 계산되는가?
■ 스케줄링(scheduling)은 어떻게 구현되는가?
■ 어떻게 sychronization를 보장하는가?
■ Deadlocks 발생과 해결책
■ GNU는 무엇인가?
■ 리눅스의 특징
■ 명령해석기 : 쉘(shell)
■ Linux Kernel은 무엇인가?
■ 프로세스의 모습은?
■ 여러개의 프로세스는?
■ Thread는 어떻게 구현되어 있는가?
■ 프로세스 상태변화의 특이점?
■ Fork()의 문제점 및 해결방법은?
■ Zombie는 어떤 상태인가?
■ Scheduler의 모습은?
■ 동적 우선순위는 어떻게 부여되는가?
■ 동적 Timeslice는 어떻게 계산되는가?
■ 스케줄링(scheduling)은 어떻게 구현되는가?
■ 어떻게 sychronization를 보장하는가?
■ Deadlocks 발생과 해결책
본문내용
실행가능 한 태스크이며 스케줄러는 이를 태스크에서
실행함
■ 어떻게 sychronization를 보장하는가?
● 스핀락(Spinlock) : Multiprocessor 동기화용
code)
spinlock_t mr_lock = SPIN_LOCK_UNLOCKED;
spin_lock(&mr_lock);
/*critical section*/
spin_unlock(&mr_lock);
○ 역할 : Spinlock임 오직 하나만 critical section에 들어갈 수 있도록 함
○ 원리 : 만약 어떤 쓰레드가 이미 잠겨진 스핀록을 다시 잠그려 시도한다면 그 쓰레드는 busy waiting됨
lock을 잠글 수 있을 때까지 기다림. 만약 록이 열려있으면 록을 잠근 다음 진행게 됨
=> 결국 멀티프로세싱 동기화 가능
○ 단점 : 이미 잠겨진 스핀록이 다른 쓰레드들을 스핀하도록 하는 것은 프로세서 시간을 소모하므로 스핀록으로
오랫동안 계속 잡고 있는 경우 CPU 소모됨
○ 쓰임 : 스핀록은 가볍고 소유자가 하나인 록으로서 짧은 기간동안만 소유될수 있는 곳에 쓰여야함
● Semaphore : uniprocessor 또는 multiprocessor 동기화용
code)
struct semaphore
{
int count;
struct wait_queue *wait;
};
wait_queue
{
struct task_struct *task;
struct wait_queue *next;
};
○ 역할 : mutex로 호배제도 가능하며 semaphore counter로 다중배제 가능
○ 원리 : 쓰레드를 휴면(sleep)시킨 다음 록을 잠글 수 있을 때 깨어나게 하는 것함. 이렇게 하면 프로세서가 놓여지게 되고 다른 코드를 실행할 수 있게 해줌
○ 단점 : 블록(block)된 쓰레드를 넘나드는 두번의 context switch가 발생함
※ context switch는 순수한 오버헤드임
○ 쓰임 : 락을 오랫동안 소유해야 하는 경우(critical section에 오랫동안 머물러야 하는 경우)
■ Deadlocks 발생과 해결책
● 발생
○ 프로그램 하나에 세마포어를 두개 이상 쓸 경우, 서로 다른 두 제어 경로에서 서로 상대방이 점유하고 있는 세마포어가 해제되길 기다리며 동작을 멈출 경우에 발생함
● 해결책
○ 주소순서에 따라 세마포어에 대한 요청을 수행
(가장 낮은 주소에 위치한 세마포어 자료구조에 세마포어 요청을 먼저 수행)
실행함
■ 어떻게 sychronization를 보장하는가?
● 스핀락(Spinlock) : Multiprocessor 동기화용
code)
spinlock_t mr_lock = SPIN_LOCK_UNLOCKED;
spin_lock(&mr_lock);
/*critical section*/
spin_unlock(&mr_lock);
○ 역할 : Spinlock임 오직 하나만 critical section에 들어갈 수 있도록 함
○ 원리 : 만약 어떤 쓰레드가 이미 잠겨진 스핀록을 다시 잠그려 시도한다면 그 쓰레드는 busy waiting됨
lock을 잠글 수 있을 때까지 기다림. 만약 록이 열려있으면 록을 잠근 다음 진행게 됨
=> 결국 멀티프로세싱 동기화 가능
○ 단점 : 이미 잠겨진 스핀록이 다른 쓰레드들을 스핀하도록 하는 것은 프로세서 시간을 소모하므로 스핀록으로
오랫동안 계속 잡고 있는 경우 CPU 소모됨
○ 쓰임 : 스핀록은 가볍고 소유자가 하나인 록으로서 짧은 기간동안만 소유될수 있는 곳에 쓰여야함
● Semaphore : uniprocessor 또는 multiprocessor 동기화용
code)
struct semaphore
{
int count;
struct wait_queue *wait;
};
wait_queue
{
struct task_struct *task;
struct wait_queue *next;
};
○ 역할 : mutex로 호배제도 가능하며 semaphore counter로 다중배제 가능
○ 원리 : 쓰레드를 휴면(sleep)시킨 다음 록을 잠글 수 있을 때 깨어나게 하는 것함. 이렇게 하면 프로세서가 놓여지게 되고 다른 코드를 실행할 수 있게 해줌
○ 단점 : 블록(block)된 쓰레드를 넘나드는 두번의 context switch가 발생함
※ context switch는 순수한 오버헤드임
○ 쓰임 : 락을 오랫동안 소유해야 하는 경우(critical section에 오랫동안 머물러야 하는 경우)
■ Deadlocks 발생과 해결책
● 발생
○ 프로그램 하나에 세마포어를 두개 이상 쓸 경우, 서로 다른 두 제어 경로에서 서로 상대방이 점유하고 있는 세마포어가 해제되길 기다리며 동작을 멈출 경우에 발생함
● 해결책
○ 주소순서에 따라 세마포어에 대한 요청을 수행
(가장 낮은 주소에 위치한 세마포어 자료구조에 세마포어 요청을 먼저 수행)
키워드
추천자료
조세법률주의
단군신화의 의미와 기능
파주시 여성회관의 여가교육프로그램이 성인여성의 생활만족도에 미치는 영향
고소설감상 중간과제 홍길동전 장르적 시각
ERP(전사적자원관리)의 등장배경, ERP(전사적자원관리)의 특징, ERP(전사적자원관리)의 구축...
체육과(체육교육)의 특징, 체육과(체육교육)의 목표, 체육과(체육교육)의 내용, 체육과(체육...
인지과학의 의미와 특징, 등장배경, 관련학문에 대하여
인지과학의 의미와 특징, 등장배경, 관련학문에 대하여
[건설업][건설산업][건설수요][건설금융][건축][건설]건설업(건설산업)의 의의, 건설업(건설...
[이명박정부의 경제정책] 이명박정부의 경제정책에 대한 분석, 특징 및 문제점과 노무현 대통...
광고 속의 성차별
김대중정부 생산적 복지(국민의 정부 생산적 복지) 분류, 김대중정부 생산적 복지(국민의 정...