공부중

[C] 하드웨어, 운영체제, 프로그래밍 언어 본문

프로그래밍/C언어

[C] 하드웨어, 운영체제, 프로그래밍 언어

복습 2024. 8. 16. 23:20
728x90

하드웨어 

1. 메모리 (주기억 장치) 

컴퓨터 전원이 종료되면 내용이 사라지는 휘발성 기억장치이다. 컴퓨터는 0과 1만 이해할 수 있으므로 메모리에는 0과 1의 형태로 데이터가 저장되게 되는데 이때 bit와 byte의 단위 이해가 필요하다. 

 

8bits가 1byte이다. 

https://keshavsps.blogspot.com/2017/11/bit-vs-byte.html

 

 

메모리는 바이트 단위로 접근할 수 있도록 주소(address)가 부여되며, C에서는 메모리 관리가 중요하다. 

 

 

 

 

2. 하드디스크 (보조 기억장치 )

흔히 아는 SSD, USB 등이 보조기억장치이다. 메모리와는 다르게 전원이 꺼져 있어도 내용이 유지되며, 프로그램이 실행될때 메모리에 적재된다. 

 

 

 

3. 시스템 버스 

프로세서와 메모리 , 그 외에 여러 장치들을 연결하는 통로이다. 모든 데이터는 시스테 버스를 통해서 이동하게 된다. 

 

 


운영 체제

 

1. 운영체제 (OS)

운영체제는 하드웨어와 사용자 프로그램 사이에 위치한 소프트웨어를 의미한다. 프로세서, 메모리, 입출력 장치 와 같은 하드웨어를 관리하며, 사용자가 컴퓨터를 쉽게 사용하도록 돕는다. 프로그램을 메모리에 적재하고 실행하게 된다. 

윈도우와 같은 운영체제로 인해 사용자는 보조기억장치에 파일이나 폴더 등을 생성하고 관리하는 것이 가능해진다. 

 

https://leechangyo.github.io/cs/2020/05/20/26.Operating-System-Architecture/

 

 

 


프로그래밍 언어

1. 어셈블리 언어

기계어의 대안으로 만들어진 언어이다. 어셈블리 언어는 기계어에 대한 사람이 이해하기 쉬운 대안으로 만들어진 프로그래밍 언어입니다. 기계어가 순수한 이진 코드로 구성된 반면, 어셈블리 언어는 이러한 이진수 코드를 기억하기 쉬운 니모닉, 즉 기호적 표현으로 변환합니다. 예를 들어, 기계어의 이진 코드 '10110000'이 어셈블리 언어에서는 'MOV AL, 0B0h'와 같은 형태로 표현될 수 있습니다. 이러한 니모닉 사용은 프로그래머가 기계의 작동을 더 정밀하게 제어할 수 있게 해줍니다.

 

 

 

 

2. 고급 프로그래밍 언어. 

어셈블리 언어의 니모닉보다 사람이 이해하기 쉬운 단어들과 문법으로 구성된 언어이다. 프로세서가 달라도 동일한 사용법을 제공하며, 다양한 컴퓨터에서 사용하는 프로그램을 작성하는 것이 가능하다. 

 

 

 

 

3. 컴파일 언어

C언어와 같이 컴파일 과정을 통해 기계어로 직접 번역되고 실행되는 언어를 컴파일 언어라한다. 

이때 컴파일러는 한 언어를 다른 언어로 변환하는 소프트웨어이다. 

 

예를들어 C언어로 코드를 만들면, 컴파일러가 이를 기계어로 변환하고, 운영체제는 이진수로 변환된 기계어를 읽어 어떠한 출력을 낼 수 있도록 한다. 

 

 

 

4. 인터프리터 언어. 

파이썬과 같이 한 문장씩 통역(Interpret)해서 실행되는 언어를 인터프리터언어라고 한다. 

 

 

 


C 언어

 

1. 장점

• 이식성이 높다. 

C 언어는 플랫폼 독립적인 특성을 가지고 있어, 다양한 운영 체제와 하드웨어에서 사용할 수 있습니다. 이는 C 언어로 작성된 프로그램이 하나의 플랫폼에서 다른 플랫폼으로 쉽게 옮겨 실행될 수 있다는 의미입니다. 이러한 특성 덕분에 C 언어는 시스템 소프트웨어 뿐만 아니라 애플리케이션 소프트웨어 개발에도 널리 사용됩니다.

 

• 저수준 언어


• 간결한 문법


• 성능


• 강력한 메모리 조작 기능


• 다양한 라이브러리

 

 

 

2. 단점 

낮은 추상화. 메모리 관리 오류. ..

메모리 관리가 너무 어려웡.. 

 

 

 

3. C언어의 영향을 받은 언어 

 

3.1 C++

  • 개발자 및 배경: 벨 연구소의 뱐 스트라우스트럽(Bjarne Stroustrup)이 C 언어의 기본 구조에 객체 지향 개념을 추가하여 C++을 개발했습니다.
  • 관계: C++은 ANSI C를 기반으로 하며, C 언어의 직접적인 확장이라고 볼 수 있습니다. C++은 C 언어의 모든 기능을 포함하고 있으며, 객체 지향 프로그래밍과 같은 추가 기능을 제공합니다.
  • 이름: C 언어의 증가 연산자인 '++'에서 이름을 따 왔으며, 이는 '더 나은 C'라는 의미를 담고 있습니다.

3.2 자바(Java) 및 C#

  • 배경: C++에서 영향을 받았지만, 기본적인 프로그래밍 구조와 문법은 C 언어에서 유래했습니다.
  • 특성: 자바와 C#은 객체 지향 프로그래밍을 기본 아이디어로 삼고 있으며, C++과 마찬가지로 C의 문법과 기본적인 프로그래밍 패러다임을 공유합니다.
  • 이식성과 보안: 자바는 플랫폼 독립적인 실행이 가능하도록 설계되었으며, C#은 .NET 프레임워크와의 긴밀한 통합을 통해 보안과 개발의 편의성을 강조합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'프로그래밍 > C언어' 카테고리의 다른 글

[C] C 기초  (0) 2024.08.16
[C언어] 포인터  (0) 2023.05.13