[인프런 워밍업클럽 CS 2기] 2주차 발자국

[인프런 워밍업클럽 CS 2기] 2주차 발자국

운영체제

  • 프로세스 간 통신:
    프로세스는 같은 컴퓨터 내에서는 파이프나 쓰레드를 사용하고, 다른 컴퓨터 간에는 네트워크를 통해 통신한다.

    소켓 통신과 원격 프로시저 호출(RPC)을 사용하여 원격 통신을 처리한다.

  • 공유 자원과 임계 구역:
    여러 프로세스가 동시에 접근해서는 안 되는 영역을 임계구역이라 하며, 상호 배제 메커니즘을 통해 하나의 프로세스만 접근할 수 있도록 관리한다. 경쟁 상태를 방지하기 위해 세마포어와 모니터 등의 기법을 사용한다.

  • 세마포어:
    세마포어는 대기 큐와 열쇠 관리자를 통해 프로세스 간의 자원 접근을 관리한다. 그러나 세마포어는 잘못 사용할 경우 문제가 발생할 수 있으며, 이를 보완하기 위해 모니터와 같은 상호배제 메커니즘이 사용된다.

  • 데드락:
    교착 상태는 프로세스들이 자원을 점유하고 다른 프로세스의 작업이 완료되기를 기다리는 상황에서 발생한다. 이를 방지하기 위해 은행원 알고리즘과 같은 회피 기법을 사용한다.

  • 메모리 관리:
    메모리 할당 방식은 고정분할방식(페이징), 가변분할방식(세그멘테이션), 버디 시스템으로 나뉜다. 각 방식은 내부 단편화와 외부 단편화 문제를 해결하며, 효율적인 메모리 관리를 위해 사용된다.

 

알고리즘

  • 재귀:
    재귀는 함수가 자기 자신을 호출하는 방식으로 문제를 해결하는 기법이다. 이를 통해 반복되는 문제를 하위 문제로 나누어 해결한다. 대표적인 예시로 팩토리얼 계산, 배열의 합, 문자열의 길이 계산, 지수 함수 계산, 하노이 탑 문제를 재귀적으로 풀어낸다. 재귀의 핵심은 기저조건 설정이며, 이를 통해 무한 호출을 방지할 수 있다. 콜스택(FILO 구조)을 사용하여 함수 호출과 종료를 처리한다.

  • 재귀 패턴:

    • 하위 문제를 해결한 뒤 상위 문제로 확장하는 하향식 계산 방식.

    • 반복적인 문제 해결보다는 하위 문제의 결과를 기반으로 상위 문제를 개선하는 방식이 효율적임.

  • 재귀 함수 예시:

    • 팩토리얼 계산: 하위 문제에서 구한 값을 상위 문제로 연결.

    • 배열의 합: 배열을 분할하고 합을 구하는 방식.

    • 문자열의 길이: 문자열을 하나씩 제거하면서 길이를 계산.

    • 지수 함수: 지수 계산을 재귀적으로 처리.

    • 하노이 탑: 문제를 나누어 하향식으로 접근하는 방법을 학습.

회고

이번 학습을 통해 운영체제의 핵심 원리알고리즘의 재귀적 사고 방식을 체계적으로 이해할 수 있었다.
특히, 알고리즘에서는 재귀적 사고를 통한 문제 분할이 얼마나 유용한지 체감할 수 있었으며
간단해 보이지만 재귀 함수 설계 시 기저 조건 설정과 스택 사용이 중요한 부분이라는 점을 깨달았다.
또한, 운영체제에서는 프로세스 간의 자원 공유와 통신이 어떻게 관리되는지, 그리고 자원 경쟁으로 인해 발생할 수 있는
교착 상태를 회피하고 해결하는 다양한 방법을 학습하면서 시스템의 안정성과 성능을 유지하는 것이 매우 중요한 문제임을 알게 되었다!

댓글을 작성해보세요.

채널톡 아이콘