728x90

시스템 소프트웨어 개발(Development Assistance Guidance for system software)

DAG(Development Assistant Guide)

Scalability

  • Scalability
    • 시스템에 들어오는 워크로드가 증가할때, 해당 시스템을 처리하는 능력
      | Ex. 기존 시스템에서의 작업량이 1이었는데, 이가 2, 100, 1000과 같이 부하가 커졌을 때도 시스템 처리가 가능한가?
    • But, 이상적으로 하드웨어적, 네트워크적 부하를 무한대로 감당할 수 있는 시스템은 존재 하지 않는다.
      🌟 따라서 프로그래밍의 전과정에서 이를 해결하는 게 가장 중요!

Scalability의 향상 방법

1. System Call Awareness

  • 시스템 콜 시간 : 200 usec ~ 1000 usec (평균 500 usec)

 

  • 시스템 콜의 일반적인 수행단계
  1. Library call & User Mode
  2. Interruption & Go to kernel mode
  3. Go to Critical Section
    • result 저장 후, 다시 usermode 진입
  4. Interruption & Back to User mode

 

  • 표준 라이브러리를 호출할 경우에는 시스템 콜이 발생하지 않는다.
    • 🌟 시스템 콜은 고도의 작업이므로 가급적으로 호출하지 않도록 주의해야한다.
  • fread() : 시스템 콜 X(내부적인 버퍼 사용), read() : 시스템 콜
    ∴ 시스템 부하를 줄이기 위해서는 fread를 사용
  • malloc() : 시스템 콜 X
    • 그러나 brk나 sbrk와 같이 malloc 내부 함수는 시스템 콜
      ∴ fread나 malloc 같은 경우 자체적으로는 시스템 콜 함수가 아니지만 언제든 시스템 콜을 할 수 있음
  • gettimeofday() : 시스템 콜

 

🌟 시스템 콜 사용에서의 유의점

  1. 시스템 콜은 가급적이면 피해야한다.
  2. 같은 작업을 대체할 수 있는 시스템 콜이 아닌 작업을 찾는다.
  3. 불가피한 경우, 최소한의 시스템 콜만을 이용해서 작업을 수행한다.(버퍼에 담아놓는 등의 방법)
  4. 임계 구역(critical section)에서 시스템 콜을 절대 하지 않는다.

 

2. Synchronization Object Awareness

  • 실행중인 객체의 자료구조에의 상호배제 접근 방법
  • 고수준의 동기화 객체
    • 스레드 : mutex, condition variable, rw_mutex
    • 프로세스: Semaphore, file-lock

 

3. Memory Usage Pattern Awareness

 

4. Cache Memory Awareness(will not cover here)

728x90

'🧑‍💻 Language > C·C++' 카테고리의 다른 글

[C 이론] 17. 구조체  (0) 2021.06.23
[C 이론] 16. 파일 입출력  (1) 2021.06.22
[C 이론] 15. 표준 입출력  (0) 2021.06.22
[C 이론] 14. 문자와 문자열(2)  (0) 2021.06.05
[C 이론] 13. 문자와 문자열(1)  (0) 2021.06.05