Level : WORDPRESS BOOK LINKEDIN PATENT Send Mail 동냥하기 hajunho.com

시스템콜

C++ / / 2019. 1. 30. 03:01
반응형

윈도우와 리눅스는 모두 운영체제 커널에서 시스템 콜 인터페이스(System Call Interface, SCI)를 제공하지만, 둘 사이에는 몇 가지 중요한 차이점이 있습니다.

### 1. **시스템 콜의 개념**
- **리눅스**: 리눅스에서는 시스템 콜이 사용자 프로그램이 커널 기능을 호출할 수 있게 하는 주요 메커니즘입니다. 각 시스템 콜은 고유한 번호를 가지며, 이를 통해 사용자 모드에서 커널 모드로 전환합니다.
- **윈도우**: 윈도우에서도 시스템 콜 인터페이스가 존재하지만, 이를 직접 사용하는 경우는 드뭅니다. 대부분의 경우, 응용 프로그램은 커널 서비스를 호출하기 위해 Win32 API를 사용합니다. Win32 API는 내부적으로 시스템 콜을 수행하는 복잡한 과정을 숨깁니다.

### 2. **API 계층**
- **리눅스**: 대부분의 리눅스 시스템 콜은 glibc와 같은 표준 C 라이브러리를 통해 접근합니다. 이러한 라이브러리는 시스템 콜을 단순하게 감싸고 있으며, 시스템 콜의 형태와 의미를 크게 변경하지 않습니다.
- **윈도우**: 윈도우는 Win32 API를 통해 커널 기능을 제공합니다. Win32 API는 커널 서비스를 호출하는 데 필요한 복잡성을 추상화하여 개발자가 더 사용하기 쉽게 만듭니다. Win32 API는 다양한 API 함수와 매크로를 포함해 여러 종류의 시스템 리소스와 상호작용을 제공합니다.

### 3. **시스템 콜 디스패칭**
- **리눅스**: 리눅스는 시스템 콜 번호를 사용해 커널에서 직접 시스템 콜 핸들러를 호출합니다. 호출 규약은 CPU 아키텍처마다 다를 수 있습니다.
- **윈도우**: 윈도우에서는 사용자 모드 애플리케이션이 ntdll.dll이라는 라이브러리를 통해 시스템 콜을 호출합니다. ntdll.dll은 커널 모드의 Native API를 호출하며, 이 단계에서 커널 서비스에 대한 접근이 이루어집니다.

### 4. **보안 및 검증**
- **리눅스**: 시스템 콜 요청 시, 커널은 호출자가 필요한 권한을 가진지 검증합니다.
- **윈도우**: 윈도우는 커널과 사용자 모드 간의 보안 경계를 엄격하게 유지하며, 보안 참조 관리자(SRM, Security Reference Monitor)를 사용해 시스템 콜 요청을 검증합니다.

### 5. **사용 가능한 시스템 콜**
- **리눅스**: 리눅스에서는 약 300개 이상의 시스템 콜이 제공됩니다. 다양한 파일 시스템, 네트워크, 프로세스 관리 기능을 포함합니다.
- **윈도우**: 윈도우 커널의 Native API는 상대적으로 더 많은 시스템 콜을 포함하지만, 직접적으로 사용할 필요는 드뭅니다. 대부분의 경우 Win32 API가 충분히 강력하고, 이를 통해 필요한 작업을 수행할 수 있습니다.

### 요약
윈도우와 리눅스 간의 시스템 콜 인터페이스는 기능적으로는 비슷하지만, 설계와 사용 방식에서 차이가 있습니다. 리눅스는 시스템 콜을 더 직접적으로 다루는 반면, 윈도우는 Win32 API를 통해 더 추상화되고 보호된 접근 방식을 제공합니다. 이는 윈도우가 더 많은 복잡성을 관리하면서도 개발자에게는 더 쉽고 직관적인 환경을 제공하려는 의도에서 비롯된 것입니다.

 


인간관계, 사회, 그리고 염세주의에 대한 단상

최근 나 자신을 위로할 무언가가 필요하다는 생각이 들었다. 특정 사상에 빠져볼까 고민중이다. 특정 사상에 포함되는 다양한 생각의 템플릿이 있다보니 해당 형식을 따르면, 삶이 좀 더 쉽게 흘러가지 않을까.,. 라는 가설 때문.

그래서 염세주의라는 사상을 잠시나마 탐구해보려고 했다. 그러나 곧 알게 된 것은 염세주의가 본질적으로 현실주의와 깊이 연결되어 있다는 점이었다.

염세주의의 대표적인 작가로는 염상섭이 있다. 그의 인생을 조사해보니, 67세에 직장암으로 타계했다고 한다. 물론 암에는 여러 원인이 있고, 사람마다 수명이 가지각색인 법이다. 그러나 이런 정보를 통해 염세주의에 너무 빠지지 않기로 다짐하게 되었다. 극단적인 현실주의와 염세주의는 균형 있게 받아들일 필요가 있다는 생각이 들었다.

어느 늦은 밤, '프리한 19'이라는 프로그램을 보고 있었다. 프로그램에서는 돈 때문에 수백 명에게 가짜 암 진단을 내리고, 그로 인해 사람들을 죽음으로 몰고 간 의사, 가짜 입양으로 생부모와 생이별하게 하여 돈을 번 사람들의 이야기가 나왔다.

이와 같은 사건은 나에게 충격을 주었고, 인간의 이기심과 비인간적인 행태에 대한 성찰을 하게 만들었다. 사실, 한국의 스타트업 환경에서도 여러 비슷한 일을 경험했다. 대기업에서 일해본 적이 없는 사람들은 대기업에 대해 이야기하면서 마치 모든 것을 아는 것처럼 말한다. 나는 대기업에서의 경험이 없더라도, 적어도 스타트업에 대해서는 충분히 안다고 생각한다.

대기업은 적어도 지원자의 서류를 제대로 보관하려고 한다. 모든 기업들이 대기업처럼 처리한다면 이런 잔인한 일들은 줄어들지 않을까 생각해본다. 성급한 일반화와 편견을 피하기 위해서라도 꿀위키와 같은 정보 제공 사이트가 부활해야 한다.

마지막으로, 최근에는 개발 업무 중 디버그 모드에서 보안에 민감하지 않은 정보를 테스트하기 위해 임시로 사용한 코드를 기억한다.

```csharp
#if DEBUG
    txtID.text = "itsme";
    txtPASSWD.text = "goodToSeeU#123";
#endif
```

결국, 우리는 너무한 현실주의와 염세주의의 덫에 빠지지 않도록 조심해야 한다. 균형을 유지하며 소중한 것들을 지키는 것이 중요하다.

---

내가 마주한 현실과 사회적 부조리에 대해 고민했던 경험을 나누었다. 인간 관계와 사회에 대한 불만이 있더라도, 염세주의에 빠지지 않고 현실주의적으로 접근하는 것이 더 바람직하다는 교훈을 얻었다.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기