Swift

Swift | CS 정리 (앨런강의)

iOSDEv 2024. 1. 2. 11:04
컴퓨터 동작원리
컴퓨터의 기본 구조와 동작


1. 실제로 개발자의 코드는 평소에 하드에 저장되어 있다가 프로그램을 실행하는 순간 메모리(RAM - 주기억 장치)에 복사되어 올라간다.
2. CPU는 한 번에 한가지 일처리만 할 수 있다( CPU내에는 여러개의 코어와 쓰레드가 있기 때문에 한꺼번에 여러일을 동시에 처리하게 만들 수 있지만, 기본적인 동작은 한 번에 한가지 일 처리이다)
3.개발자가 짠 코드를 한줄씩 컴퓨터가 해석할 수 있는(한번에 CPU가 처리할 수 있는)형태으 ㅣ기계어로 바뀌어서 메모리에 올라간다.
4. CPU는 메모리에 있는 코드를 한 줄씩 차례대로 실행한다
5. 메모리에는 실제 모든 공간에 주소가 부터 있어 CPU에서 접근이 가능하다
메모리

데이터 종류에 따라 최대의 속도와 최적의 조건으로 사용하기 위한 효율적 메모리의 구조(설계)

주기억장치는 현재 실행되고 있는 프로그램(프로세스)

동작의 내용이 저장되는 곳

메모리
코드 데이터 힙  스택
명령어 / 프로그램
프로그램이 시작되면 해당 프로그램이 전체/일부 복사되어 올라가는 영역
데이터 
프로그램이 한줄 한줄 실행되면서 실제 필요한 데이터들을 사용 하는 영역

 

  • 메모리에는 4가지가 있다 (코 / 데 / 힙 / 스)
    • 코드 : 명령어 / 프로그램
      • 앱의 모든 코드
    • 데이터 : 전역변수 / 타입(static/class) 변수
      • 공통으로 공유하기 위한 데이터 
      • 앱이 실행되는 동안 불변
    • 힙 : 동적할당 
      • 일반적으로 오랫동안 저장
      • 크기가 크고, 관리할 필요가 있는 데이터들을 저장한다
      • 개발자가 잘 관리해야한다
    • 스택 : 함수실행을 위한 임시적 공간
      • 크기가 작고 빠르게 사용하기 위한 데이터
      • 알아서 자동 관리된다
폰노이만 컴퓨터 구조
cpu ram hdd
비싸고, 작고, 빠른속도  --------------------------------------------------------------------------------- 싸고, 큰 크기, 느린 속도

 

CPU와 메모리(RAM)의 동작
프로그래밍 언어

 

 

  • CPU내부구성
    • 산술논리연산장치(ALU: Arithmetic Logic Unit) 
      • 계산기 
    • 레지스터(Register)
      • CPU 내부의 작은 임시 저장 장치
      • 프로그램을 실행하는 데 필요한 값들ㅇ르 임시로 저장
      • 여러개의 레지스터가 존재하고 각기 다른 이름과 역할을 가지고 있음
    • 제어장치(Control Unit)
      • 제어신호라는 전기신호를 내보내고 명령어를 해석하는 장치
        • CPU가 메모리에 저장된 값을 읽고 싶을 때 메모리를 향해 메모리 읽기라는 제어 신호를 보낸다
        • CPU가 메모리에 어떤 값을 저장하고 싶을 땐 메모리를 향해 메모리 쓰기라는 제어 신호를 보낸다

 

 

RAM
시스템 S/W 응용 S/W
운영체제
CPU/Memory/App/Screen/SoundCard/Mouse
앱1(코데힙스) - 프로세스
앱2(코데힙스) - 프로세스

 

ROM(Read Only Memory)
  • 컴퓨터를 꺼도 지워지지 않는 메모리
  • POST(자기자신 점검) : Power of Self Testing
  • ROM-BIOS : 기본 입출력 활성화
  • Booting : OS를 메모리에 올림

 

cashe
CPU(제어장치 + 연산장치)

메모리에 있는 일정 주소를 복사해서 cashe에넣어놓으면 CPU는 굳이 RAM까지 갈 필요가 없고 cashe에서 바로바로 가져다 씀
------------------BUS-----------------

RAM

 

언어의 발전 관계
기계어 -> 어셈블리언어 -> c언어
c언어를 기계어로 변환시키는 자체를 컴파일
  • 기계어 : 실제로 CPU가 받아들여 실행할 수 있는 실제 있는 언어
  • 어셈블리언어(저급언어):기계어를 인간이 읽을 수 있는 형태로 표현한 언어
  • C언어(고급언어): 인간이 논리적인 생각대로 코드를 짤 수 있는 형태 

 

메모리 저장방식
2진법 / 16진법

컴퓨터는 모든 숫자를 0과 1로만 인식을 한다

 

10진법과 2진법
  • 10진법
    • 0,1,2,3,4,5,6,7,8,9
    • 123 => 123
    • 10을 2진법으로?
      • 5를 만약 2진법으로 나타 낸다면 2를 나눠서 몫과 나머지를 계산 한다
        • 5 / 2 = 2(몫) ...1(나머지)
        • 2 / 2 = 1(몫) ...0(나머지)
        • 5를 2진법 : 101
      • 6을 2진법으로한다면
        • 6 / 2 = 3(몫) ... 0(나머지)
        • 3 / 2 = 1(몫)  ... 1(나머지)
        • 6을 2진법 : 110
  • 2진법
    • 0,1, 10, 11, 100, 101
    • 101 : 1 + 0 + 4 = 5(10진법 표현)
      • 1X2(0) = 1
      • 0X2(1) = 0
      • 1X2(2) = 4
    • 메모리 전기신호처럼 on을 하게되면 1 꺼지면 0
    • 비트 하나가지고 두개의 표현이 가능함 (0, 1)
    • 비트가 2개가 있다면 4가지 표현이 가능함 2x2
      • 만약 비트가 8개면 2(8) = 256가지 표현이 가능함 
1byte == 8bit
1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit
1byte ( 컴퓨터에서 데이터를 다루기 위해 사용하는 기본 단위)
  • 1bit : 2진수에서 한 개의 자리수
  • 1byte : 컴퓨터에서 데이터를 다루기 위해 사용하는 기본 단위

1bit(1) 1bit(1) 1bit(1) 1bit(1) 1bit(1)
1bit(1) 1bit(1) 1bit(1)
1byte ( 컴퓨터에서 데이터를 다루기 위해 사용하는 기본 단위)

 

  • 2⁷ + 2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰ = 255(256개의 값을 표현가능)
  • 양수만 표현할 수 있다고 하면 0~255의 범위
  • 문자 하나는 1byte
데이터 용량

 

메모리는 복사가 쉽다

 

20진법, 2진법, 16진법
  • 10진법 
    • 인간의 숫자체계 
    • 컴퓨터가 사용하는 데이터 단위에서 아무 의미가 없음(데이터 경계 구분이 어려움)
  • 2진법(0b)
    • 실제 컴퓨터가 데이터를 읽고/저장하는 방법
  • 16진법(0x)
    • 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
    • 16진법의 수 2개를 묶으면 1byte
    • 큰 숫자를 데이터단위로 의미를 알아보기가 쉽다 
    • 변환도 쉽고 메모리 공간 표현이 직관적이다
16진법
  • 유니코드
  • RGB Color code( #FF00FF)
1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit
1Nibble 1Nibble
1byte = 2Nibble = 8bit

32bit/ 64bit 컴퓨터의 이해
  • cpu가 한 번에 처리할 수 있는 비트 단위
  32bit computer 64bit computer
CPU가 한번에 처리 할 수 있는 bit개수 bit가 32개 
= 2³²
bit가 64개 
= 2⁶⁴
(32bit 컴퓨터 보다 더 여러가지의 색 표현이 가능하다)
몇 개의 메모리 주소 참조
(CPU의 레지스터가 한 번에 기억할 수 있는 메모리 주소 범위)
2³² 개의 메모리 주소를 참조 가능
4GButes
2⁶⁴개의 메모리 주소를 참조가능
16 EBytes
(64bit 컴퓨터에서는 4GB의 약40억배 이상의 메모리를 활용할 수 있다)

 

메모리에서 음수의 표현 방법
MSB
(Most Signifiant BIt)
최상위 비트
            LSB
(Most Significant Bit)
최하위 비트
부호 비트
(Sign Bit)
부호를 표현
데이터 비트(Data Bit)
실제 값을 표현 
양수를 저장할 때 모든 8자리 비트를 모두 데이터 비트로 사용

 

  • 양의 표현법
0 0 1 0 1 0 1 0
    2⁵      

= 42

  • 음의 표현법
    • 숫자를 한 번 뒤집는다(1의 보수를 해준다) 
      • 만약 10의 숫자를 뒤집는다하면 01
      • 고로 위 00101010을 뒤집으면 11010101
  1 1 0 1 0 1 0 1
+               1
  1 1 0 1 0 1 1 0

 

 

 

  0 0 1 0 1 0 1 0
  1 1 0 1 0 1 1 0
+                
1 0 0 0 0 0 0 0 0
버림
(오버플로우)
               

 


 

참조 사이트

 

https://www.inflearn.com/course/%EC%8A%A4%EC%9C%84%ED%94%84%ED%8A%B8-%EB%AC%B8%EB%B2%95-%EB%A7%88%EC%8A%A4%ED%84%B0-%EC%8A%A4%EC%BF%A8/dashboard

 

앨런 Swift문법 마스터 스쿨 (온라인 BootCamp - 2개월과정) 강의 - 인프런

Swift문법을 제대로 이해, 활용해보고자 하는 철학을 바탕으로 과정이 설계되었습니다. 코딩에 대해 1도 모르는 비전공자를 시작으로 네카라쿠배에 입사할 수 있는 초고급 수준까지 올리는 것을

www.inflearn.com

 

https://semiconductor.samsung.com/kr/support/tools-resources/dictionary/bits-and-bytes-units-of-data/

 

바이트(Byte) | Samsung Semiconductor KR

삼성반도체 공식 웹사이트 기술 블로그에서 바이트(Byte)에 대해 알아보세요.

semiconductor.samsung.com

 

https://kwonsoonwoo.github.io/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B3%B5%ED%95%99/2018/08/20/CS50-%EC%BB%B4%ED%93%A8%ED%84%B0%EC%99%80-%EC%BB%B4%ED%93%A8%ED%8C%85%2816%EC%A7%84%EC%88%98%29.html

 

(CS50)-컴퓨터와 컴퓨팅(16진수) · ksw의 삽질연대기

CS50 x edwith 강의를 들으며 정리하는 용도의 포스팅입니다. 핵심개념 16진수 컴퓨터과학에선 10진수나 2진수 대신 16진수(Hexadecimal)로 표현하는 경우가 많음. 10진수를 16진수로 바꾸어보기 JPG같은

kwonsoonwoo.github.io

https://hongong.hanbit.co.kr/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98-4%EA%B0%80%EC%A7%80-%ED%95%B5%EC%8B%AC-%EB%B6%80%ED%92%88cpu-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EB%B3%B4%EC%A1%B0%EA%B8%B0%EC%96%B5%EC%9E%A5/

 

[컴퓨터 구조] CPU, 메모리, 보조기억장치, 입출력장치를 알아보자

컴퓨터의 핵심 부품은 CPU, 메모리, 보조기억장치, 입출력장치입니다. 이 네 가지 부품의 역할만 이해하고 있어도 컴퓨터의 작동 원리를 대부분 파악할 수 있습니다. 주기억장치에는 크게 RAM과 RO

hongong.hanbit.co.kr