묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
콘솔(Console)에 대하여 질문
안녕하세요 강의 정말 잘 보고 있습니다!Console과 관련하여 질문이 생겨 올립니다! 제가 나름대로 정의한 Console의 정의는 아래와 같습니다 과거에는 Console이라는 하드웨어가 존재하였다하지만 오늘날 말하는 Console은 물리적인 Console을 의미하는것보다는 모니터, 키보드, 마우스와 같이 시스템과 상호작용하는 입출력 환경 전체를 의미한다혹은 CLI를 통해 OS와 직접 상호작용 할 수 있는 Console(Terminal) Application을 의미하기도 한다( Application 단에 구현 ) 질문 ( 그림 참고 )"Console을 추상화한 것이 stdin, stdout다" 의 의미는 Console환경, 즉 모니터와 키보드를 추상화한것이 모니터는 stdout, 키보드는 stdin 파일이라고 이해해도 되는걸까요?해당 내용을 그림으로 정리해 보았습니다
-
미해결초보자를 위한 IT 인프라의 이해
VLAN과 L3 스위치
안녕하세요. 강의 잘 듣고 있습니다.VLAN은 이더넷이라서 서로 다른 이더넷 네트워크, 서로 다른 브로드캐스트 이더넷 네트워크와의 트래픽을 넘기기 위해서 L3 스위치가 필요하다. 라고 말씀하셨는데 이더넷은 L2 계층인데 L3 스위치가 필요하다는 말씀이 이해가 안되서요.어떻게 이해하는게 좋을까요??
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
dram 질문
마지막 그림으로 질문하겠습니다Mat이 모여서 Bank을 구성하고Bank Group을 Chip으로 보며저렇게 Chip이 4개 앞, 뒤로 있으면 DIMM구조 인것으로 이해했습니다.여기서 row, col은 Bank Group 하나에 대해서 선택하는 것이고, Bank address는 Chip을 선택하는게 맞나요 ??(그런데 cell와 chip은 주소가 없다고 하셔서 잘 이해가 되지않습니다) 질문2) active, row access에서 CAS도 떠야 이제 Activate가 됐다고 하셨는데, 이때 CAS = Low인거죠? 그리고 여기서 we도 떠야한다고 하셨는데 그럼 we가 1이면 write 0이면 read동작을 수행하나요?
-
미해결기술노트 - 컴퓨터 구조부터 클라우드, 빅데이터까지 / 진로 고민, 취업 상담
web server, WAS, api server의 관계
안녕하세요, 좋은 영상 감사합니다. 질문 하나 드려도 될까요? (web server, WAS, api server의 관계 관련)상황은 이렇습니다.vue.js framework를 활용해서 웹앱을 개발했습니다. 배포는 firebase를 이용했습니다.api 서버는 nest.js framework를 사용했고, db는 postgresql을 사용했습니다. 배포는 k8s를 이용했습니다. 기대했던 기능들이 잘 동작하고, 데이터도 잘 쌓이고 있습니다.문제는.. 개발을 진행한 후에 웹 개발 관련 지식들을 쌓는 과정에서 발생했습니다. 웹서버, WAS 라는 용어가 나오더라고요. 그래서 어라? 싶었습니다.저는 이 2가지 개념에 대해서 전혀 몰랐음에도 웹앱은 잘 작동하고 있었기 때문입니다.전혀 몰랐기 때문에 이 두가지를 구축할 생각조차 못했는데도요. 질문 1.대체 웹서버는 무엇일까요? 웹에서 돌려받는 데이터는 API 서버를 통해 돌려받으면 충분한데.. 웹서버로는 어떤 요청을 해야하나요? 질문 2.웹서버, was에 대한 구축이 없이도 제 웹앱이 잘 동작하고 있는 것은 firebase의 존재 때문일까요? 질문 3.웹서버, was 관련 개념을 확립하다보니, req & res의 흐름이 아래와 같을 것이라는 생각이 듭니다. 하자 없는 이해일까요?web application - web server - WAS - API server - DB 이 영상을 보게 된 것도 web server, WAS의 개념, 역할을 찾는 와중이었는데, 다른 많은 것을 얻었지만 이 부분은 얻지 못한 것 같아 도움을 구합니다.미리 감사드립니다!!
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
PCB HW 설계직무에서 디지털 설계 경험 어필하기
안녕하세요. 항상 좋은 강의 잘 듣고있습니다.다름이 아니라, PCB HW 설계 직무에 대한 관심이 있는 상태로 강의를 듣다보니 질문이 생겼는데요,PCB HW 설계는 PCB위에 IC, 능동소자, 통신 인터페이스등 다양한 소자를 배치해서 회로가 원하는 구동을 할 수 있게 설계하는 직무라고 알고 있습니다.질문) 그럼 FPGA를 직접 설계한다는 것은 IC를 직접 설계하는 것이고, FPGA를 검증용으로 쓴다는 것은 필요한 IC Chip을 구매하기 전에 미리 검증 한다는 의미로 이해해도 될까요?바쁘시겠지만 회신주시면 많은 도움이 될 것 같습니다. 감사합니다.
-
해결됨독하게 시작하는 C 프로그래밍
파일 입/출력 시 관여하는 컴퓨터 요소들 질문
안녕하세요 널널강사님! 우선 좋은 강의에 감사인사드립니다. 파일 입/출력 관련해서 질문이 있는데요! 파일 입/출력이 수행되는 과정에서 이 '과정'에 조금이라도 관여하는 컴퓨터 요소들(CPU, RAM, Kernel, ...)이 무엇인지가 궁금한데요.예를 들어, 아래와 같은 예졔 소스코드를 제가 디버그 모드로 실행해보았는데요.(참고로 MacOS에서 clang 컴파일러를 사용)#include <stdio.h> int main(void) { FILE* fp = NULL; fp = fopen("../TEST.txt", "w"); if (fp == NULL) { puts("Error: Failed to open file"); return -1; } fprintf(fp, "Hello"); fclose(fp); return 0; }어쨌건 위 소스코드가 하는 일은 "TEST.txt" 라는 파일을 생성하고 개방한 뒤, 해당 파일에 "Hello" 라는 문자열을 쓰는 로직이잖아요? 하지만 소스코드 레벨에서는 어쨌건 fp 라는 구조체 포인터를 할당하고 하는 과정에서 메모리(엄밀히 말하면 가상 메모리)를 사용하게 되고 있구요! 그러면 위 함수같이 순수하게 I/O 동작만 수행할 경우는 CPU는 전혀 관여하지 않고 유휴 상태라고 보면 되나요? 흔히, I/O Bound 작업에서는 CPU가 관여하는 부분이 없기 때문에 비동기로 처리한다고들 하는데.. 이 말은 I/O 작업에서는 CPU가 하나도 사용되지 않고 메모리와 파일 시스템과 상호작용하는 Kernel 정도만 사용한다고 보면 될까요? 약간 질문이 난해할 수 있을 것 같은데.. 답변 주시면 추가로 궁금한 점은 재질문 드리겠습니다!
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
[Ch.5] SRAM의 장점 관련 질문
안녕하세요! SRAM의 장점 중 Mux, Demux의 딜레이를 줄일 수 있다는 부분에 대해 질문 드립니다. (1) 제가 이해한 내용으로는, 데이터를 Read할 때 BL와 BLB을 모두 합친 16개의 signal을 보기 위해 MUX 16:1이 필요한 걸로 볼 수 있지만, Sense amp로 인해 1-stage를 줄일 수 있기 때문에 딜레이를 감소시킬 수 있는 것으로 이해했습니다. 이렇게 이해하는 것이 맞는지 궁금합니다.(2) Sense amp 없이도 BL 8개만 확인하여 출력을 얻어내는 방식을 사용할 수 있다고 생각했는데, 이러한 방식은 왜 사용하지 않는지 궁금합니다.항상 좋은 강의와 함께 질문글 읽어주셔서 감사합니다!
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
과제3 질문
제가 포트에 대한 개념이 부족했었는데 아래에 정리한 글이 맞을까요?1. 칩 관점칩 포트: 칩 전체의 입출력을 위한 포트로, 외부와의 통신을 담당합니다.모듈 핀: 칩 내부의 특정 모듈에서 사용하는 개별적인 접점으로, 각 모듈의 기능을 수행하기 위한 신호를 전달합니다.2. 핀 묶음 관점포트: 여러 개의 핀을 묶어서 하나의 단위로 다루는 개념으로, 데이터 전송이나 제어 신호를 처리하는 역할을 합니다.핀: 포트의 구성 요소로, 개별적인 전기적 접점입니다.--> 싱글포트 sram : read, write중 하나를 할 수 있는 포트 1개가 존재(WE)--> 투포트 sram : read포트 1개, write포트 1개(we, wa, wd/ re, ra, rd)--> 듀얼포트 sram : read, write를 할 수 있는 포트가 2개씩(cs_a, addr_a, we_a, wd_a, rd_a / cs_b, addr_b, we_b, wd_b, rd_b)
-
해결됨독하게 시작하는 C 프로그래밍
동적 배열을 만들 때 realloc을 사용하나요 보통?
원래는 malloc하고 memcpy를 모를때는 반복문으로 복사하고, 이후 free하고 다시 새로 malloc한 주소값을 대입하였습니다.이번 강의에서 realloc을 배우고 이렇게 바꿀 수 있었습니다.그러면 실제로 동적 배열 만들때는 주로 realloc을 사용할 것 같은데, 강사님께서 realloc을 쓸일이 거의 없다고 하셨습니다. 설명해주신 미리 할당을 받아두고 memory pooling을 구현하기 때문인가요?아니면 대부분 동적이 아닌 예상할 수 있는 수치의 고정된 크기로 잡을 수 있기 때문에 realloc할 일 조차 없기 때문인가요? 그도 아니면 c에도 동적 배열을 사용하기 위한 라이브러리가 있어서 인가요? 항상 양질의 강의 제공에 감사드립니다.
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
대기큐, 준비큐
혹시 대기큐나 준비큐의 경우 물리적인 디바이스에 존재하는 공간인가요? 아니면 메모리 한쪽을 대기큐, 준비큐로 사용하는 건가요?
-
해결됨독하게 시작하는 C 프로그래밍
%d와 %d 사이에 공백이 없다는 점에 주의
문자, 정수 입력 개행문자 제거 부분입니다.scanf_s("%d %d", &x, &y);scanf_s("%d%d", &x, &y);음 이게 공백이 있든 없든 둘다 똑같이 동작하는데 무슨 의미가 있는거죠??
-
해결됨독하게 시작하는 C 프로그래밍
24년 8월 기준 비주얼 스튜디오 2019 버전 다운로드 방법
C#,C++ 관련 코드를 공부하기 위해서 비주얼 스튜디오 2019 버전을 다운로드 하려고 하는데다운르도 홈페이지 들어가니깐 community 버전 다운로드 버튼이 활성화가 되어있지 않던데혹시 다른 방법 아시는 분들 있는지 싶어서 글 작성해 봅니다 !!! 부탁드리겠습니다 ㅠㅠ
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
16강 질문
1) Area가 클수록 Cost가 비싸고 따라서 Area가 크면 용량이 작다고 설명하셨습니다.먼저 Area와 용량의 관계에서 "Area가 크다는 것은 각 메모리 Cell의 크기가 크다는 것이고 따라서 더 적은 수의 Cell을 넣을 수 있어 용량이 적음" 으로 이해했고, Area와 Cost의 관계는 Area가 클수록 공정에서 비용이 들어 Cost가 비싼것으로 이해했습니다 하지만 결론적으로 Area와 용량이 무조건적으로 반비례하는 것에 대한 이해가 잘 되지 않습니다. 2) 0이 저장된 상태에서 1을 WRITE→ 우측 인버터의 출력부분에 0이 저장되어 있을 때, 여기서 WL에 1을 주고 BL에 1을 주면 BL과 인버터가 short되면서 1과 0이 만나게 된다. 이때 BL의 신호 1은 우측 인버터 부분 신호 0이 있으므로 충전되지 않은(또는 매우 적게 충전된) Parastic Cap을 충전시키게 된다. 따라서 상태를 바꾸지 못 할수도 있는데, 이는 그저 BL의 신호 세기를 충분히 높혀주면 되는 부분이다. 라고 이해했는데 맞을까요??(pdf의 블로그에 들어가보니 접지로 BL의 신호가 흘러서 상태를 바꾸지 못할수도 있다고 되어있어서요 !!)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
ASIC에서 SRAM에 관한 질문입니다.
안녕하세요, 정성이 느껴지는 강의를 제공해 주심에 감사드립니다. 컴퓨터 구조의 메모리 계층 구조와 Verilog로 SRAM 모델링하기 강의에서 궁금증이 생겨 질문 드립니다. ASIC 칩을 찍어내는 상황이라는 가정을 하고, SRAM의 DEPTH를 2의 지수가 아닌 수(예를 들면 1021)로 지정하면, 실제 칩에는 DEPTH가 1021인 SRAM이 올라가나요? 아니면 1024짜리 SRAM이 올라가나요? 파운드리마다 다른가요? 실제 ASIC 칩에 DEPTH가 1021인 SRAM이 올라간다고 가정한다면, 주소의 bitwidth는 10-bit이므로 1022번이나 1023번 주소처럼 잘못된 주소에 접근할 가능성이 있습니다. 그렇기 때문에 이를 막는 로직이 추가로 필요할 것이라고 생각이 드는데, 이때 발생하는 overhead를 고려하는 것과 그냥 DEPTH가 1024인 SRAM을 올려버리는 것을 PPA 관점으로 비교할 수 있는 방법이 있을까요? 3.parameter로 선언된 변수를 비교 대상으로 삼아도 ASIC에서 아무 문제 없나요? 가령, if (addr > DEPTH) 처럼요!
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
강의자료
수업하시는 ppt 자료는 혹시 어디서 확인 가능할까요 ?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
cache 코드 관련 추가 질문드립니다.
한 회차에서 많은 너무 많은 질문을 드리는 것 같네요... 한번에 질문 드려야 하는데 볼때마다 새롭게 궁금하는 점이 생겨 또 질문드립니다...always @(posedge clk, negedge rstn)if (!rstn) cc_re_d <= 0;else cc_re_d <= cc_re; 위 코드의 경우 Cache에 read enable 하는 변수에 해당하는 것 같습니다. cc_re와 cc_re_d를 별도로 변수를 초기화 하고, clk 신호에 맞게 동기화를 하는 이유를 잘모르겠습니다. (제가 생각한 내용은 cc_re의 경우 i_cpu_req 신호에 비동기로 값을 변경하고, 해당 값을 clk 동기화 신호에 맞게 cc_re_d에 넣게되면, clk 주기 사이에 cc_re의 값이 변경되어도 cc_re_d의 값은 clk가 주기가 오기전까지 값을 유지하게 되는 상황인데 굳이 cc_re의 경우에만(추가로는 mem_we_d도 마찬가지) 이런식으로 구성한 이유를 잘모르겠습니다.)+ 추가로 찾아보니 메타스테이블 상태를 방지하기 위함 -레벨 트리거(cc_re가 그대로 전달될 경우) 신호가 엣지 트리거(다른 always @문에 사용되는 구문들) 상태와 겹치는 상태에서 불안정한 신호를 전달하기 때문이라는데, (레벨 트리거 신호를 엣지 트리거 상태로 변경하기 위함인가요?) 이게 맞는 내용일까요? => 그렇다면 다른 레벨 트리거 변수들은 위와 같이 동기화 신호로 안바꿔주는 이유가 궁금합니다...)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
dual port ram 설계 코드 질문
module dpsram #( parameter DEPTH=8, parameter WIDTH=32, parameter DEPTH_LOG=$clog2(DEPTH) )( input clk, input [WIDTH-1:0] din_a, input [WIDTH-1:0] din_b, input [DEPTH_LOG-1:0] addr_a, input cs_a, input we_a, input [DEPTH_LOG-1:0] addr_b, input cs_b, input we_b, output reg [WIDTH-1:0] dout_a, output reg [WIDTH-1:0] dout_b ); reg [WIDTH-1:0] mem[DEPTH-1:0]; initial begin for(int i=0;i<DEPTH;i++) mem[i]=0; end always@(posedge clk) begin //write if(we_a && cs_a) mem[addr_a] <= din_a; if(we_b && cs_b) mem[addr_b] <= din_b; end always@(posedge clk) begin //read if(~we_a && cs_a) dout_a <= mem[addr_a]; if(~we_b && cs_b) dout_b <= mem[addr_b]; end endmodule위와같이 dpsram코드를 짰습니다. 예제 코드와는 다르게 저는 write와 read를 각각 나눠서 always block을 구성했는데 이렇게 짜면 다르게 동작하나요? RTL 뷰어로 보니 아래와 같이 복잡하게 나와서 질문드립니다.
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
PID 관련 질문입니다!
[추가] 파이썬으로 스레드 다루기이 강의에서 PID값이 프로세스를 실행할 때마다 달라지는 걸 볼 수 있는데 이유가 궁금합니다.동일한 프로세스를 반복해서 실행한다고 이해했는데, 이러면 고유한 번호(동일한 번호)가 출력되어야 하는 거 아닌가요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
cache 코드 관련 질문드립니다!
always @(posedge i_clk, negedge i_rstn) begin if(!i_rstn) r_wb_mem <= 0; else if(w_cpu_we) r_wb_mem[w_cc_wa] <= 1; else if(w_mem_re) r_wb_mem[w_cc_wa] <= 0; else if(w_mem_we) r_wb_mem[w_cc_wa] <= i_cpu_write; end위 코드의 경우 별도의 설명이 없었던 것 같습니다.코드를 분석하는 중 궁금한 점이 몇가지 생겨서 질문 드립니다.cpu_we이 1인 경우 CPU에서 (읽기를 통해 값을 비교하여 바꾸는 작업이 아닌) 쓰기 작업에 대한 요청을 보냈기 때문에 Main Memory에 값을 쓰기 위한 wb이 반드시 1로 되는게 맞는건지 궁금합니다.mem_re가 1인 경우 wb이 0이 되는 것이 헷갈립니다. 제가 이해한 Write Back은 쓰기 Main Memory에 데이터를 저장하는 것이기 때문에 mem_re 즉, 읽기 요청이 왔을 때 쓰는 행위가 같이 일어나면 안되는 것이라서 그런것인지 궁금합니다. (추가로 다른 이유가 있는지 궁금합니다.)mem_we가 1인 경우 memory에 Data를 써야하기 때문에 i_cpu_wirte에 값을 전달 받는 것이 아니라 1이 되어야 하는게 아닌지 궁금합니다.(i_cpu_write가 0인데 mem_we가 1인 상태가 궁금합니다. => 그냥 메모리에 쓸 준비가 되어 있는 상태에서 i_cpu_write 요청이 들어오면 그때 wb을 1로 만들겠다는 의미가 맞는지 궁금합니다.)아직 해석이 완벽하지 않아 내용 정리 및 전달이 미흡한점 죄송합니다.
-
해결됨독하게 시작하는 C 프로그래밍
동적 할당 메모리 질문
안녕하세요! 현재 강사님의 동적 할당 메모리 강의에서 아래 예제 소스코드를 파헤쳐보고 있는데요! #include <stdio.h> #include <stdlib.h> int main(void) { int* pList = NULL; pList = (int*)malloc(sizeof(int) * 3); pList[0] = 10; pList[1] = 20; pList[2] = 30; for (int i = 0; i < 3; ++i) { printf("%d\n", pList[i]); } free(pList); return 0; }그런데 디버그 모드로 실행하면서 메모리 뷰를 보고 있는데, 잘 이해가 되지 않는 지점이 있어 질문드립니다.(제가 개인적으로 MacOS를 사용해서 CLion 이라는 IDE를 쓰긴하는데, 강의 속 visual studio 처럼 메모리 뷰를 보는 기능은 동일하게 제공해주어서 제가 사용하는 IDE 첨부사진인 점 양해 부탁드리겠습니다 (__) ) 우선 break point를 아래처럼 라인 바이 라인으로 설정한 후 하나씩 실행해보고 있는데요. 한 step 씩 사진을 첨부하면서 설명을 하겠습니다.1.정수 포인터 변수인 pList 에 주소 연산자(&)을 써서 "정수 포인터 변수의 메모리 주소"를 확인 => 64비트 운영체제 컴퓨터에서 포인터 변수는 8바이트(64비트) 크기를 차지하기에 이것은 이해가 됩니다2.정수 포인터 변수인 pList를 메모리 윈도우에서 확인=> 이 부분이 명확히 잘 이해가 가지 않습니다. 일단 pList를 메모리 윈도우에 입력했을 때 pList가 '정수' 타입으로 선언했기 때문에 사진 속 초록색 영역이 4바이트(32비트) 크기인 것은 알겠는데, 초록색 영역에 들어있는 "ff c3 00 d1" 은 의미가 무엇인가요..? 사실 근본적으로 pList가 정수 포인터 변수인 것은 알겠는데, 메모리 윈도우에 pList 를 입력했을 때랑 &pList 입력했을 때의 차이가 명확하게 무엇인지 스스로에게 설명을 못하겠습니다..3.다음 break point로 한 step 실행한 뒤, pList에 주소 연산자(&)를 써서 메모리 윈도우를 확인=> 소스코드에서 pList에 NULL을 할당했기 때문에 아래 사진 속 메모리 윈도우에서 빨간색으로 변한 영역이 0으로 변한 것은 이해가 갑니다.4. 3번 단계에서 메모리 윈도우에서 pList를 입력한 후 확인=> 이 부분도 잘 모르겠습니다. pList를 메모리 윈도우에 입력하니까 failed to read memory 메세지가 뜨면서 메모리를 읽지 못한다는 문제가 발생했는데, 왜 읽지 못하는 것인지.. 이해가 가질 않습니다.5. 다음 break point로 한 step 실행한 뒤 pList를 메모리 윈도우에 입력한 후 확인=> 소스코드에서 malloc() 함수가 정의되어 있는 라인이 실행된 후에야 4번에서 발생한 문제가 사라지더라구요. 4번에서 발생한 문제의 원인을 모르니 5번에서 왜 문제가 해결되었는지도 연쇄적으로 잘 이해가 가지 않네요..혹시 위 5개 단계에서 제가 질문한 부분에 대해 답변 가능하신지 여쭙습니다. 동일한 visual studio 환경이 아니라 죄송합니다 ㅠ 천천히 답변주세요! 기다리겠습니다 🙂