분류 전체보기 134

CPU - 레지스터

레지스터 : cpu 내부의 작은 임시 저장장치 - cpu 내에 다양한 레지스터가 존재, 각자 다른 이름과 역할 보유 - 데이터/명령어가 프로그램 실행 전후로 레지스터에 저장 *레지스터 관찰 : WinDbg(윈도우 운영체제), gdb(리눅스, 맥 os 운영체제) 등의 디버깅 도구를 이용해 관찰 [명령어가 프로그램 실행 전후로 레지스터에 저장되기때문에, 레지스터에 어떤 값이 저장되는지만 잘 관찰해도 '가장 낮은 수준에서의 프로그램 동작' 관찰 가능]        ** 주요 레지스터 1. 프로그램 카운터 (PC, Program Counter) - 메모리에서 다음으로 읽어들일 명령어의 주소 저장 - CPU에 따라 명령어 포인터(IP, Instruction Pointer)라고 부르기도 함 - 일반적으로 PC(프로..

CS 2025.03.25

명령어

명령어 : 수행할 동작과 수행할 대상으로 구성 -> 수행할 대상 : 수핼할 동작에 사용될 데이터 자체 or 동작에 사용될 데이터가 저장된 위치 * 1개의 명령어는 '연산 코드(opcode)' 와 0개 이상의 '오퍼랜드(operand)' 로 구성 - 연산 코드 : 명령어가 수행할 동작 - 오퍼랜드 : 동작에 사용될 데이터 혹은 그것이 저장된 위치    -- 기계어 (marchine code)  - CPU가 이해할 수 있게 0,1로 표현된 정보를 있는 그대로 표현한 언어 - ex) 실행 파일(exe) 어셈블리어 (assembly language)   - 기계어(0,1)를 읽기 편한 형태로 단순 번역한 언어 - ex) push rbp(0101 0101), pop rbp(0101 1101), ret (1100 ..

CS 2025.03.25

데이터

[숫자]- bit (0과 1을 나타내는 가장 작은 정보의 단위) - byte ( 8개의 bit를 묶은 단위) - word (CPU가 한번에 처리할 수 있는 데이터의 크기)   ㄴ word: CPU에 따라 다름. 현대 컴퓨터 대부분의 word 크기는 32bit or 64bit  2진법 (binary)  - 숫자 1을 넘어가는 시점에 자리올림해 0,1 두개의 숫자로 표현 - 단점 : 표현하는 숫자의 길이가 너무 길어짐 16진법 - 10진수 10~15를 A~F 로 표기 - 활용 : MAC 주소나 IPv6주소   => ** 10진수가 아닌 16진수 사용 이유 : 2진수로 변환이 용이 ( 10진수-> 2진수 변환 : 나누기, 나머지 연산 반복해야함 16진수 -> 2진수 변환 : 각 16진수 자리마다 2진수 4자리..

CS 2025.03.24

cs 학습의 필요 이유(당연한 이야기)

CS 지식을 갖추어야 하는 이유 -- 일단 작동만 하는 코드 vs 제대로 작동하는 코드 -> 일단 작동만 하는 코드는 장기적으로 봤을때 개발을 더 어렵게 만든다 실제 유저가 생기거나 유지보수를 해야 하는 상황에서 한계점에 봉착할 수밖에 없고, 실제 사용자들은 개발자가 의도한대로 움직이지 않는다 원리를 제대로 이해하지 못하고, 구현과 픽스만 급급하게 땜질하다보면 (이해하지 못한 예시 코드 복붙 혹은 생성형 ai 의 답변 복붙 등) '스파게티 코드' 가 된다 *생성형 ai는 언제나 일관되고 정확한 진단을 하는 것은 아니다.*스파게티 코드 : 프로그래밍에서 기술적 부채에 해당하는 분류로,  컴퓨터 프로그램의 흐름이 복잡하게 뒤엉킨 모습을 스파게티가 엉킨 모습에 비유한 표현이다.  결론적으로 문제를 정의 및 해..

CS 2025.03.24

웹 브라우저 작동 방식(기록용)

[과정] 1. URL 입력과 요청 2. 서버 응답, 데이터 수신 3. 렌더링 (html 파싱 > dom트리 생성 > css 파싱) 4. JavaScript 실행 5. 지속적인 페이지 업데이트 [상세 과정] url 입력(클라이언트) > 브라우저: 웹 서버 요청 > url 해석, DNS 조회 > 서버와의 연결 설정 > HTTP/HTTPS 요청 전송 > 서버 응답 > HTML 파싱 및 DOM 생성 > CSS 파싱 , 스타일 적용 >레이아웃 계산 > 페인팅 및 합성(Compositing) > JavaScript 실행 > 지속적 페이지 업데이트  ---URL 해석  - 프로토콜(HTTP,HTTPS), 도메인(http://www.example.com), 경로(/pathName) 등 확인 DNS 조회 - DNS(Do..

CS 2025.03.22

취업을 위한 CS 지식 정리 및 FE 개발에 도움 될 것들 정리해보기

컴퓨터 과학: 연산, 정보, 자동화에 대한 학문. 더 큰 범위에서 이야기하면 프로그램 작동 근거를 설명하는 학문- 프로그래밍의 근복적인 이해와 관련이 있다 - 포괄적 범위 : 컴퓨터 구조, 운영 체제, 자료 구조, 네트워크, 데이터베이스가 포함된다   ( 이들의 유기적 관계를 이해하는 것이 중요 ) AI 와 다용한 자동화 기술들이 발전하는 현대에  개발자는 단순한 코드 작성을 넘어서 작동 근거에 의거한 문제 해결 능력이 필요하다 다양한 open ai 설명에서도 코드나 코딩에 대한 설명을 활용하는 것은 사용자의 책임이라는 내용이 명시되어있으며 언제나 정확성이 보관된, 일관된, 책임질 수 있는 답변을 하는 것은 아니다 CS지식은 암기가 아닌 이해하는 방향으로 학습해야한다. 키워드나 정의를 단순히 외우는 것은..

CS 2025.03.21

dart(5) classes

dart 의 class에서 선언할때에는 var 키워드가 아닌 타입 명시로 선언 (기본 선언법 - constructors 제외)class Player { final name = 'jonghoon'; int xp = 1500; void sayHello() { // this 키워드 없이 호출 가능 // class method 내에서는 this를 사용하지 않는 것이 권장됨 print('hi i\'m $name'); // 아래와 같이 프로퍼티의 이름이 겹칠 경우에는 명시적 사용 // var name = 'name'; // print('hi i\'m ${this.name}'); }}void main() { //new 키워드 없이 호출만 해도 가능 var player = P..

dart(2) 설치, Variables

설치 | main function | 선언    dart pad : https://dartpad.dev/ DartPad dartpad.dev sdk 설치 - flutter 설치 시, dart도 자동 설 choco install dart-sdk or choco install flutter dart sdk 업데이트 choco upgrade dart-sdk  파일 형식 : --.dart  ...  main function ( void main () {} ) : 모든 dart 프로그램의 엔트리 포인트- main 메서드는 반드시 존재해야하며, 뭔가를 실행하는 코드는 main 함수 안에 작성 var, (타입 명으로 선언), final, dynamic, late(변수 선언 앞 수식어), ? , const, null ..