CS

[CS] 알아야 하는 개념들

kinggoddino 2024. 8. 1.

▶ 프로그램 / 프로세스

 

1. 정적 프로그램 (Static Program)

 

프로그램은 컴퓨터에서 실행 할 수 있는 파일을 통칭한다.

지금 내 작업표시줄에 있는 애들이 다 프로그램이다.

얘네들이 프로그램

아직 파일을 실행하지 않은 상태이기 때문에 정적 프로그램(Static Program),

줄여서 프로그램(Program) 이라고 부른다.

 

  • 실행 중인 프로그램. 컴퓨터가 수행하는 하나의 작업 단위.
  • 우리가 브라우저를 열어 웹사이트를 보는 것도 하나의 프로세스다.

 

▶ 프로세싱 (Processing)

  • 데이터를 처리하고 변환하는 과정.
  • 프로그램이 실행중인 것을 프로세싱중이라고 한다.
  • 문서 편집 프로그램에서 글씨를 입력하고 수정하는 과정이 프로세싱이다.

 

▶ 멀티테스킹 (Multitasking)

  • 하나의 시스템 또는 cpu가 여러 작업을 동시에 수행하는것
  • 단, 동시에 처리가 되는것은 아니고 시분할 방식을 통해 동시에 처리되는것처럼 보이게 한다. (하나의 CPU가 여러 작업을 빨리빨리 번갈아 가면서 수행함)
  • 운영체제가 프로그램도 켜고 있고, 소리도 켜고 있고, 시간도 보여주고 있고, 등등을 의미한다. (멀티프로세싱은 프로그램단위 / 멀티테스킹은 작업단위 시스템 범위 내의 단위이다.
  • task가 작업이니깐. task는 큰 작업이다. '소리출력' 이게 큰 작업이고 이안에 있는 작은 연산들은 스레드 라고 함. 프린트에 인쇄시킬 때, 소리출력, 정보전송, 화면출력, 시간보여주기, 작업표시줄 보여주기 머 등등을 테스킹 하고 있는데 동시에 되고 있으니 멀티테스킹이다. 

 

▶ 멀티프로세싱 (Multiprocessing)

  • 여러 프로세스를 동시에 실행하는 것.
  • 각 프로세스는 별도의 메모리 공간을 가짐. 
  • 영상 편집을 하면서 다른 프로그램으로는 문서를 작성하는 것. 두가지 작업이 각기 다른 프로세스로 실행됨.
  • 여러개의 CPU가 여러 작업을 동시에 수행함. 크롬도 키고, 파이참도 키고, 카톡도 키고, 슬랙도 키고 이런거.
  • 운영체제가 있기 전에는 싱글프로세싱밖에 안됐다. 하나의 작업밖에 할 수 없었다는 뜻.
  • control alt tab 하면 여러개 프로그램 창 나오는거. 그걸 가능하게 해줬다. 운영체제가 스케줄링을 해주면서 가능하게 된 것임.
  • 게임을 하면서 동영상을 인코딩하는 경우. 게임과 인코딩이 각각 별도의 프로세스로 실행됨.

 

▶ 멀티스레드 (Multithreading)

  • 하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 것.
  • 스레드는 같은 메모리 공간을 공유.?
  • 비디오 게임에서 그래픽을 렌더링하면서 동시에 소리를 재생하고 사용자 입력을 처리하는 경우. 각 작업이 별도의 스레드로 실행.
  • 내가 공부도 하고, 잠도자고, 밥도 먹는것.
  • 크롬 브라우저 하나 켜놓고 여러개의 사이트를 틀어놓는것. 크롬으로 유투브, 젭, 검색창 등등 여러개 킬 수 있는거.
  • 웹 브라우저에서 여러 탭을 동시에 여는 경우. 각 탭이 하나의 스레드로 동작함.
  •  

 스레드 (Thread) 

  • 정의 : 프로세스 내에서 실행되는 작은 작업 단위. 같은 프로세스 내의 다른 스레드와 메모리를 공유.
  • 예시 : 워드 프로세서에서 타이핑하는 동시에 맞춤법 검사를 수행하는 것. 타이핑과 맞춤법 검사가 각기 다른 스레드로 동작함.

 스케줄링 (Scheduling)

  • 정의 : CPU가 어떤 프로세스나 스레드를 언제 실행할지 결정하는 것.
  • 예시 : 여러 사람이 컴퓨터를 사용하면서 여러 프로그램을 실행하면, 운영체제는 각 프로그램이 CPU를 얼마나 사용할지 결정한다.?
  • 작업에 필요한 자원을 언제 누가 어떻게 사용할지 결정해 주는 것

 커널 (Kernel)

  • 정의 : 운영 체제의 핵심 부분으로, 하드웨어와 소프트웨어 간의 상호작용을 관리.
  • 예시 : 프로그램이 파일을 읽거나 쓰고 싶을 때 커널이 이를 중재해 실제 하드디스크 접근을 처리.
  • 하드웨어와 응용 프로그램사이에서 인터페이스 역할 수행하기 위한 핵심 부분

 터미널 (Terminal)

  • 정의 : 사용자가 텍스트 명령어를 입력하고 결과를 출력받는 인터페이스.
  • 예시 : 컴퓨터 화면에 텍스트만 나오는 명령 프롬프트
  • 터미널: 사용자와 컴퓨터 간에 상호작용을 제공하는 인터페이스(win+R 실행 후 cmd 입력하면 나오는거. 아니면 vscode나 파이참에서 나오는 터미널.)

 인터페이스 (Interface)

  • 정의 : 사용자와 컴퓨터 시스템 간의 상호작용을 위한 경계면.
  • 연결해주는 거.
  • UI(User Interface) : 사용자와 어떠한 것(하드웨어/소프트웨어)을 연결해주는 매개체

 CUI (Character User Interface)

  • 텍스트 기반의 사용자 인터페이스
  • 사용자가 문자를 통해 명령을 수행하는 것을 의미
  • 예시 : 터미널에서 명령어를 입력하여 프로그램 실행

 

 GUI(Graphic User Interface)

  • 그래픽 기반의 사용자 인터페이스
  • 사용자가 그래픽을 통해 명령을 수행하는 것을 의미
  • 예시 : 윈도우 OS에서 아이콘과 창을 사용해서 프로그램을 실행하고 제어

'CS' 카테고리의 다른 글

[CS] OOP 객체지향 프로그래밍  (0) 2024.07.30
[CS] 소프트웨어 설계  (0) 2024.07.29
[CS] 컴파일러/인터프리터/메모리영역  (0) 2024.07.28
[CS] 자료형/자료구조  (0) 2024.07.26
[CS] 운영체제  (0) 2024.07.26