하위시스템(subsystem)이란 커널에 있는 추상화 개념 중의 하나로 하나 이상의 kset들의 모임을 말한다. kset은 kobject를 포함하고 하위 시스템은 kset을 포함하지만, kset과 하위시스템의 관계는 kobject와 kset의 관계보다는 덜 밀접하다. 즉 하위시스템에 있는 kset들은 아주 일반적인 의미로만 공통부분을 갖는다.
하위시스템은 상당히 중요한 역할을 하는 데 비해서는 매우 간단한 struct subsystem 구조체로 표현한다.
struct subsystem
{
struct kset kset;
struct rw_semaphore rwsem;
}
struct kset{
struct subsystem *subsys;
...
}
subsystem 구조체는 오직 하나의 kset만을 가리키지만, 여러 개의 kset들의 자신의 subsys 포인터를 통해 하나의 하위시스템을 가리킬 수 잇다. 이러한 단방향성 관계로 인해 subsystem구조체만 가지고서는 이 하위시스템에 속하는 모든 kset을 찾아낼 수 없다.
subsystem의 멤버인 rwsem은 하위시슽메과 여기에 포함된 kset들로의 동시 접근을 막기 위한 읽기/쓰기 세마포어이다. 모든 kset들은 반드시 어떤 하위시스템에 속해야 하는데, 왜냐하면 내부 데이터로의 동시 접근을 막기 위해 하위시스템의 읽기/쓰기 세마포어를 사용하기 때문이다.
int a:1;
하위시스템은 상당히 중요한 역할을 하는 데 비해서는 매우 간단한 struct subsystem 구조체로 표현한다.
struct subsystem
{
struct kset kset;
struct rw_semaphore rwsem;
}
struct kset{
struct subsystem *subsys;
...
}
subsystem 구조체는 오직 하나의 kset만을 가리키지만, 여러 개의 kset들의 자신의 subsys 포인터를 통해 하나의 하위시스템을 가리킬 수 잇다. 이러한 단방향성 관계로 인해 subsystem구조체만 가지고서는 이 하위시스템에 속하는 모든 kset을 찾아낼 수 없다.
subsystem의 멤버인 rwsem은 하위시슽메과 여기에 포함된 kset들로의 동시 접근을 막기 위한 읽기/쓰기 세마포어이다. 모든 kset들은 반드시 어떤 하위시스템에 속해야 하는데, 왜냐하면 내부 데이터로의 동시 접근을 막기 위해 하위시스템의 읽기/쓰기 세마포어를 사용하기 때문이다.
int a:1;