컴퓨터란?
- 계산기
- 좁은 의미의 컴퓨터 : CPU, RAM으로 이루어진 것
- 넓은 의미의 컴퓨터 : 입출력장치, 보조기억 장치가 모두 포함되어 있는 것

컴퓨터가 이해하는 정보
- 데이터 : 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상 등과 같은 정적인 정보
- 명령어 : 데이터를 움직이고 컴퓨터를 작동시키는 정보
- 프로그램 : 명령어들의 모음
컴퓨터의 구조

하드웨어
- 물리적인 장치 (만질 수 있음)
- 컴퓨터 부품들 (cpu, ram, devices 등)
- 임베디드 엔지니어들이 많이 다루는 것들
소프트웨어
- 논리적인 것
- 눈에 보이고 사용할 수 있지만 만질 수 없음.
- 개발자들이 보통 많이 다루는 것들
- 운영체제와 사용자 프로그램으로 나눌 수 있음.
- 운영체제 : 커널, os라이브러리로 나뉨
- 사용자 프로그램 : 우리가 사용하는 프로그램들 ( 크롬, 워드 등등)
소프트웨어

운영체제 개념
운영체제
사용자 프로그램(앱)이 동작할 수 있도록 cpu에게 일을 시키는 주체
- 즉, 하드웨어와 소프트웨어(앱)을 이어주는 역할을 함.
- 운영체제 종류
- PC : 윈도우, 리눅스, 맥 os , Dos(윈도우의 이전 os)
- 모바일 : 안드로이드 ,ios
운영체제 목적 및 기능
- 목적 : 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축
- 기능
1) 프로세서, 기억장치, 입출력 장치, 파일 및 정보등의 자원관리
2) 자원의 스케줄링 기능
3) 사용자와 시스템 간 편리한 인터페이스 제공
4) 시스템의 각종 하드웨어와 네트워크 관리 및 제어
5) 하드웨어와 네트워크 관리
운영체제가 제공하는 서비스
1) 프로그램 실행
- 프로그램을 메모리에 올리고 실행하는 것이 가능
2) I/O Operations
- 프로그램을 실행할 때에는 파일이나 디바이스 같은 I/O가 요구되며 이를 컨트롤 해줌
3) File-system 조작
- 프로그램은 파일이나 디렉토리를 읽고 쓸때가 있음
- 파일이나 디렉토리 이름을 짓거나 특정 파일 검색
4) communication
- 프로세스들 끼리 정보를 교환하는 경우
- 프로세스들 간의 커뮤니케이션이나 네트워크를 이용해 서로 다른 컴퓨터가 커뮤니케이션 해야하는 경우
- 이 커뮤니케이션은 shared memory를 이용하게 되는데 이때 이 데이터를 읽고 쓰는 일을 함.
5) resource allocation
- 다수의 프로세스가 동시에 실행될 때 운영체제는 각 프로세스에 자원을 할당하는 역할을 함.
- 이때 자원은 cpu, memory, storage 등을 의미

커널(Kernel)
커널
컴퓨터 운영체제의 핵심이 되는 컴퓨터 프로그램으로 시스템의 모든것을 통제함.
- 운영체제의 한 부분으로 프로그램(명령어들의 집합)이다.
- 하드웨어(보조기억장치)에 저장되어 있다가 컴퓨터의 전원을 키면(로딩) ram에 저장됨. 이를 부팅이라고 함.
- 따라서, 컴퓨터가 실행 될 때에는 커널이 항상 ram에 올라가있기 때문에 ram에서 커널 공간은 빼고 사용가능함.
쉘(shell)
쉘
운영체제 상에서 다양한 운영체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램
- 셀은 사용자와 운영체제의 내부 사이의 다리 역할을 하는 프로그램
- 즉 사용자가 운영체제에게 일을 시키기 위해서는 셀을 통해서 가능함 ( 사용자가 운영체제와 상호작용하기 위해선 쉘을 이요함)
- 종류 : bash(우분투), zsh(맥분) 등
유저인터페이스
유저인터페이스 (UI)
사람과 사물(시스템, 기계 등) 사이에서 의사소통을 할 수 있도록 도와주는 것
1) GUI(graphical user interface)
- 윈도우의 경우 그래픽 유저 인터페이스를 제공하는데, 이를 이용하면 유저는 마우스와 키보드로 원하는 작업이 가능함
- 더블클릭시 프로그램 실행
2) Touch screen ineterface
- 모바일의 경우 이를 제공함.
- 손가락으로 원하는 작업 가능
3) Command-line interface(CLI)