23.12.16 TIL - CS지식(운영체제 OS, 커널, 쉘, 시스템콜, API)

Innes·2023년 12월 16일
0

TIL(Today I Learned)

목록 보기
17/147
post-thumbnail

📘 오늘의 공부

  • CS지식 훑어보기 - 운영체제 핵심 정리
  • 기술면접에서 주로 나오는 질문 예시
    • 💡 참고
      - 잔재미코딩 youtube
      - 운영체제 익힐 때 전공자들이 많이 보는 '공룡책'
      (OPERATING SYSTEM CONCEPTS)

1. intro_기술면접의 주요 질문 예시

  • 언제 멀티 프로세스를 사용하고, 언제 멀티 쓰레드를 써야하는지 가능한 구체적으로 설명하시오.
  • 채팅 서버-클라이언트 간에는 TCP와 UDP 중 어떤 프로토콜을 사용하는 것이 좋을지에 대해 구체적으로 설명하시오.

❓ 이런 질문은 왜 하는 것인가? 내가 익히는 기술과 무슨 연관이 있는가?

  • 현업에서 서비스 개발 시, 멀티 프로세스 또는 쓰레드 구조로 프로그래밍을 고려하는 것은 기본 중의 기본
    (사용자가 서비스 이용 시 성능을 높이기 위해서)
  • 채팅 등 네트워크가 Critical한 프로그램 개발 시, TCP와 UDP 프로토콜을 직접 제어하여,구현하는 경우가 많음

2. 운영체제란?

1) 운영체제 : OS(Operating System)

  • 주요 운영체제 : 윈도우, Ma cOS, UNIX 계열 OS(리눅스)

💡 안드로이드는 운영체제(OS)인가?! ( ❌ )

  • 안드로이드 안에는 LINUX KERNEL이 들어있음
    -> 안드로이드 : LINUX KERNEL + 안드로이드 앱이 동작하기 위한 여러 구성요소들(ex. Libraries,framework, 시스템 프로그램 등)을 갖추고 있음

3. 쉘(Shell)

1) 쉘(Shell)이란?

  • 커널에 붙는 부가적인 프로그램 중 하나(일종의 응용프로그램)

  • 정의 : 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램

  • 운영체제의 존재 이유 : 사용자가 컴퓨터를 쓰게끔 하는 것
    -> 어떻게 쓰는지 사용법(인터페이스)을 제공하는 프로그램이 바로
    (ex. 사용자가 어떻게 명령하면 컴퓨터 구동시킬 수 있다, 프로그램을 실행할 수 있다 등)

2) 쉘(Shell)의 구성

  • 쉘의 종류 : 터미널 환경(CLI-Command Line Interface), GUI(Graphical User Interface) 환경 두 종류로 분류
    (ex. 터미널 환경 : 까만건 바탕이요, 하얀건 글자인... 쓰기 너무 어려움/
    GUI : 쓰기 편하게 시각적으로 직관적인 환경 제공)

  • 유명한 쉘 : 리눅스 bash
    (개발자는 터미널 환경에도 익숙해져야 함!)


4. 시스템 콜(System Call)

  • 시스템 콜 or 시스템 호출 인터페이스
  • 시스템 콜 : 운영체제에서 제공하는 응용 프로그램 인터페이스
  • 운영체제가 운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공
    • 쉘 -> 운영체제 요청할 때 시스템 콜 이라는 인터페이스를 통해 요청
    • 시스템 콜은 함수 형태로 구현되어 있음
    • 운영체제는 주로 C, C++ 로 구현됨 -> 시스템 콜도 이에 따라 대체로 C, C++ 에서 호출 가능한 함수로 제공하는 경우가 많음

5. API

  • API(Application Programming Interface)
    • 프로그래밍 언어 별 해당 운영체제에 맞는 API 구현
  • API 내부에는 필요시 해당 운영체제의 시스템콜을 호출하는 형태로 만들어짐



📝 총 정리 및 느낀점

  • 내가 이해한대로 총 정리해보기


  • 느낀점
    • 각 개념 설명을 들으면 이해가 되다가도 막상 그걸 다 합쳐서 큰 그림으로 보고있자면 이게 이건가, 저건가 헷갈리면서 잘 이해가 안가기도 한다.
      오늘 들은 영상에서 수업 목표가 50%만 이해해도 성공이라고 하셨는데 전공자도 아닌데 너무 욕심부리는 것 같기도 하고!^^
      이정도 이해한것도 대단하다, 처음부터 너무 스트레스받지 말자고 또 다짐해본다. 롱런하려면 멘탈관리도 필요할듯! ㅋㅋ
profile
꾸준히 성장하는 우상향 개발자

0개의 댓글