본문 바로가기
스터디/혼공학습단 11기 - 얄팍한코딩지식

혼공얄코 - 비개발자는 진짜 모르는 용어 톺아보기

by 찌노오 2024. 1. 28.

 

기본미션

주차 진도 기본 미션
4주차
(1/22 ~ 1/28)
Chapter 02 Ch.02 마무리 용어 정리하기(p. 203)

 

 

조금 가벼운 내용이지만 비개발자들은 쉽게 접하기 어려운 용어들로 구성되어 있다.

이걸 컴퓨터공학을 전공하지도, 공부를 하지 않은 내가 정리한다는 게 다소 무리가 있겠지만, 혼공얄코의 설명을 바탕으로 내가 이해한대로 다시 재정리 해보기로 한다.

 

1. 운영체제(Operation System)

컴퓨터의 운영체제는 우리 몸의 자율신경계(Autonomic Nervous System, ANS) 와 유사하다고 생각한다.

운영체제를 이해하는데, 왜 더 어려운 개념을 가져오냐고 생각할 수도 있겠지만 가볍게 생각해보자.

 

자율신경계, 출처 : https://www.msdmanuals.com/

 

 우리는 운동을 하면 맥박이 빨라지는데 이는 몸에 혈액을 빠르게 공급하기 위함이라고 한다. 마찬가지로 컴퓨터도 작업에 따라서 CPU의 클럭을 조절하거나, 메모리양을 조절하는 등의 관리를 사용자의 입력이 아닌 자동으로 조절한다.

또한, 활동을 너무 많이 해서 젖산이 과도하게 분비되면 피로해지고 잠을 자게 만드는 것처럼, 과도한 프로세스 부하는 컴퓨터의 성능을 완전히 활용할 수 없게 될 수도 있다.

 

정리하면, 운영체제는 자율신경계처럼 다음과 같은 역할을 수행한다.

  • 컴퓨터의 자원을 효율적으로 관리하는 자원관리
  • 사용자의 개입없이 컴퓨터를 자동제어
  • 여러 응용 프로그램과 하드웨어 사이의 상호작용
  • 시스템에서 문제 발생시 이를 감지하여 오류처리

 

2. GUI vs CLI

사용자가 컴퓨터에 각종 명령을 내리고 여러 프로그램을 실행하는 인터페이스를 구분하는 2가지 개념이다.

운영체제 뿐만 아니라 프로그램 자체에서 인터페이스를 설명할 수도 있다.

 

GUI(Graphic User Interface)

  • 사용자가 컴퓨터와 상호작용할 때 그래픽 요소들을 이용해 화면상에서 직접적으로 조작할 수 있게 해주는 인터페이스
  • 아이콘, 창, 버튼 등 시각적인 요소들을 통해 사용자와 컴퓨터 간의 상호작용을 용이하게 만들어 줌

 

CLI(Command Line Interpreter)

  • 사용자가 텍스트 명령어를 입력하여 컴퓨터와 소통하는 인터페이스
  • 명령어를 통해 원하는 작업을 수행하며, 주로 터미널이나 콘솔 창에서 사용

 

차이점

  1. 인터페이스 유형:
    • GUI: 그래픽 요소들을 사용하여 시각적이고 직관적인 환경을 제공함
    • CLI: 텍스트 명령어를 사용하여 작업을 수행하며, 사용자는 명령어를 직접 입력하고 실행함
  2. 사용자 편의성:
    • GUI: 그래픽 요소들을 통해 직관적이고 쉽게 작업을 수행할 수 있어 일반 사용자에게 더 친숙함
    • CLI: 명령어를 알아야 하고 텍스트로 작업하기 때문에 초기에는 학습이 필요하지만, 숙련된 사용자에게는 빠르고 효율적임
  3. 자원 소비:
    • GUI: 그래픽 요소들이 화면에 표시되므로 일반적으로 더 많은 시스템 자원을 소비함
    • CLI: 텍스트 기반이므로 자원 소비가 적고, 효율적으로 동작함
  4. 복잡성:
    • GUI: 복잡한 작업이나 다양한 옵션을 처리하기에 적합하지만, 초보자가 처음 사용할 때는 다소 혼란스러울 수 있음
    • CLI: 명령어를 사용하여 간단하게 특정 작업을 수행하기에 초보자가 사용하기 더 어려울 수 있으나, 일정 수준 이상의 숙련 사용자에게는 강력하고 효율적임

이러한 차이점이 존재하기에 엔지니어, 프로그래머들은 자연스럽게 CLI를 더 선호하게 된다. 왜냐하면 더 빠르게 작업이 가능하고 자원을 효율적으로 쓸 수 있기 때문이다. 게다가 오류가 발생하면 찾아서 수정하기도 편하기도 하고.

 

해커들의 이미지가 왜 CLI인 이유를 이제 알겠는가?

 

3. 커널(Kernel)

커널은 앞서 설명한 운영체제의 핵심이다. 하드웨어와 소프트웨어 간의 통신을 중재하고 시스템 자원을 효율적으로 관리한다.

 

혼공얄코에서는 운영체제가 칼이라면, 커널을 칼날에 비유한다. 그래서 우리가 알고 있는 운영체제의 핵심 역할은 사실 커널이 담당하고 여기에 여러 기능을 얹은 모습을 운영체제라고 부른다고 한다.

 

사실 깊게 들어가면 너무 어려운 개념이라 이정도 까지 이해하고 넘어가겠다.

 

4. 오픈 소스

 소프트웨어의 소스 코드가 공개되어 있고, 누구나 해당 소스 코드를 살펴보고 수정하며 자유롭게 사용할 수 있는 소프트웨어를 가리킨다. 사용자들에게 개선 및 수정에 참여할 수 있는 기회를 제공하여, 오픈소스 참여자가 될 수도 있다.

 

한마디로 집단 지성인데 개발자들 사이에서는 이런 협업이 장려되기도 하고 커뮤니티를 통해 성장하는 문화가 존재하는 것 같다.

 

예전에는 단순히 그냥 무료 소프트웨어 정도로만 이해했는데, 사실 그보다는 휠씬 더 복잡한 개념이다.

 

  • 소스코드가 공개되어 있기 때문에 누구나 문제를 살펴 볼 수 있고,
  • 누구나(혹은 참여자) 소스코드를 수정하고 개선할 수 있고,
  • 사용자들 간의 다양한 경험과 지식을 공유할 수 있다.

그래서 유료 소프트웨어처럼 오류 발생시 해결을 해준다든지, 사용자 설정에 맞게 일부 커스텀을 해준다든지 하는 사후관리는 없지만 문제를 건의하기도 혹은 직접 해결하면서 소프트웨어가 발전한다.

 

운영체제 중에는 리눅스(Linux)가 대표적인고, DBMS에서는 MySQL, 또 내가 처음 배웠던 개발언어인 파이썬(Python)도 대표적인 오픈소스이다.

 

 

잡담

혹시 스타크래프트 유즈맵 해본 사람이 있는지 모르겠다.

오픈소스라는 개념을 보자마자 난 이게 먼저 떠오르는데, 나도 누군가 배포한 유즈맵을 수정해서 더 재밌게 바꿔보기도 했던 기억이 있다. (물론, 이제는 2차 저작권이 분명히 존재하기 때문에 오픈소스라고 보긴 어렵겠다.)

 

 

근황인데 17년도에 올라온.....

 

 

 

 

 

 

 

 

** 사실과 다른 내용이 있을 수 있습니다. 언제든지 피드백 부탁드립니다!

반응형

댓글