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)
- 시스템 콜의 일반적인 수행단계
- Library call & User Mode
- Interruption & Go to kernel mode
- Go to Critical Section
- result 저장 후, 다시 usermode 진입
- Interruption & Back to User mode
- 표준 라이브러리를 호출할 경우에는 시스템 콜이 발생하지 않는다.
- 🌟 시스템 콜은 고도의 작업이므로 가급적으로 호출하지 않도록 주의해야한다.
- fread() : 시스템 콜 X(내부적인 버퍼 사용), read() : 시스템 콜
∴ 시스템 부하를 줄이기 위해서는 fread를 사용 - malloc() : 시스템 콜 X
- 그러나 brk나 sbrk와 같이 malloc 내부 함수는 시스템 콜
∴ fread나 malloc 같은 경우 자체적으로는 시스템 콜 함수가 아니지만 언제든 시스템 콜을 할 수 있음
- 그러나 brk나 sbrk와 같이 malloc 내부 함수는 시스템 콜
- gettimeofday() : 시스템 콜
🌟 시스템 콜 사용에서의 유의점
- 시스템 콜은 가급적이면 피해야한다.
- 같은 작업을 대체할 수 있는 시스템 콜이 아닌 작업을 찾는다.
- 불가피한 경우, 최소한의 시스템 콜만을 이용해서 작업을 수행한다.(버퍼에 담아놓는 등의 방법)
- 임계 구역(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 |