Địa chỉ Logic và địa chỉ Vật lý

Địa chỉ logic: là địa chỉ sinh bởi CPU, tham chiếu đến một vị trí nhớ độc lập với cấu trúc, tổ chức vật lý của bộ nhớ. Ví dụ các tiến trình biên dịch (compiler) tạo ra mã lệnh chương trình mà trong đó mọi tham chiểu đến bộ nhớ đều là địa chỉ logic

Địa chỉ vật lý: là địa chỉ sinh bởi đơn vị quản lý bộ nhớ MMU, là một địa chỉ thực trong bộ nhớ chính; địa chỉ vật lý được chuyển từ địa chỉ logic khi trình biên dịch thực hiện quá trình linking/loading

Khi nói đến vi xử lý 8bit, 16bit, 32bit… hay kiến trúc máy tính x32, x64; điều đó có nghĩa là kích thước của thanh ghi bên trong vi xử lý là chừng đó bit.

Xét vi xử lý có thanh ghi là n bits, lúc đó thanh ghi này sẽ đánh được địa chỉ ( quản lý ) cho 2^n ô nhớ có địa chỉ từ 0 đến 2^(n-1)

Như vậy, với CPU 32 bits chẳng hạn, nó sẽ đánh địa chỉ được 2^32 ô nhớ, tương ứng với 4GB RAM, cho nên một kiến trúc máy tính với 32bits chỉ có thể làm việc với tối đa 4GB ô nhớ

Trong quá trình sử dụng, nếu sử dụng vượt quá dung lượng RAM hiện tại thì hệ thống sẽ tự động chuyển sang sử dụng bộ nhớ ảo hay dung lượng ổ cứng còn dư để lưu trữ tạm thời

Vậy câu hỏi đặt ra ở đây là : liệu một vi xử lí 32 bits có thể sử dụng cùng với một dung lượng bộ nhớ > 4GB RAM được không ?

Câu trả lời là hoàn toàn có thể, giả sử như có 2 tiến trình được nạp vào bộ nhớ, với tổng dung lượng là 8GB RAM, lúc này số lượng ô nhớ thực sự được thực thi chỉ là 4GB ô nhớ mà thanh ghi 32 bits có thể đánh địa chỉ.

Thêm một vấn đề nữa, đó là làm như thế nào để đánh được địa chỉ cho phần tiến trình bị “dôi ra” khỏi 4GB ?

Bởi vì thanh ghi 32 bits không thể đánh địa chỉ tới được những vùng nhớ đó, vậy chúng ta sẽ sử dụng địa chỉ logic để có thể đánh địa chỉ được những ô nhớ đó, tức là nếu sử dụng địa chỉ logic ta có thể đánh địa chỉ cho số ô nhớ > 4GB so với cách đánh địa chỉ trên thanh ghi thông thường

Địa chỉ logic = Segment.Offset

Địa chỉ vật lý = Segment * kích_thước_vi_xử_lý + offset

Rất cần chú ý ở đây là tuy chúng ta có thể đánh địa chỉ được cho > 4GB ô nhớ, nhưng thực chất tại mỗi thời điểm chỉ có tối dda 4GB ô nhớ thực sự được truy xuất và hoạt động

Xem thêm về bus: http://voer.edu.vn/m/bus-dia-chi-du-lieu-va-dieu-khien/28924b83

Mô hình OSI

Tầng 1: Physical Layer

Tầng vật lý định nghĩa các đặc tả về điện và vật lý cho các thiết bị, bao gồm bố trí của các chân cắm, hiệu điện thê và các đặc tả về cáp nối

Chức năng và dịch vụ căn bản:

+ Thiết lập hoặc ngắt mạch điện, môi trường truyền dẫn

+ Giải quyết tranh chấp tài nguyên, điều khiển lưu lượng

+ Điều chế, biến đổi các dữ liệu, tín hiệu số

Các thiết bị hoạt động: Repeater, Hub

Data unit: Bit

Tầng 2: Data Link Layer

Tầng dữ liệu cung cấp các phương tiện có chức năng truyền dữ liệu giữa các thực thể mạng và quy trình hoạt động của chúng; sửa lỗi ở tầng vật lý nếu có

Chia làm 2 tầng con:

+ MAC: cung cấp cơ chế đánh địa chỉ vật lý MAC và điều khiển truy nhập kênh, cho phép các nút mạng và các trạm cuối liên lạc với nhau trong một mạng

+ LLC: có chức năng ghép kênh( multiplexing) các giao thức truyền qua tầng MAC( khi truyền ) và phân kênh ( demultiplexing) chúng ( khi nhận).

Giao thức: Ethernet ( mạng cục bộ), PPP, HDLC, ADCCP ( point-to-point)

Các thiết bị hoạt động:Bridge, Switch

Data unit: Frame

Tầng 3: Network Layer

Tầng mạng cung cấp hệ thống định vị địa chỉ logic cho thiết bị, phân phát các gói dữ liệu từ đầu này sang đầu kia (end-to-end),  định tuyến, điều khiển lưu lượng dữ liệu; phân đoạn, hợp đoạn mạng; kiểm soát lỗi

Giao thức điển hình: IP

Các thiết bị hoạt động: Router

Data unit: Packet

Tầng 4: Transport Layer

Tầng giao vận cung cấp các phương tiện truyền dữ liệu giữa các máy chủ ( hosts), và kiểm soát độ tin cậy của một kết nối được cho trước, phát hiện lỗi trong các gói tin ( checksum)

Gồm 2 dạng dịch vụ giao vận:

+ Tin cậy, hướng kết nối: TCP

+ Không tin cậy, không kết nối: UDP

Mỗi liên kết tạo ra trên tầng giao vận để vận chuyển dữ liệu cho tiến trình tầng ứng dụng của 2 nút mạng được xác định bởi 5 thông số:

+ IP nguồn

+ IP đích

+ Port number nguồn

+ Port number đích

+ Giao thức ( TCP/ UDP)

Data unit: datagram( UDP), segment( TCP)

Tầng 5: Session Layer

Tầng phiên kiểm soát các phiên hội thoại giữa các máy tính

Tầng này thiết lập, quản lý và kết thúc các kết nối giữa các trình ứng dụng đang cộng tác với nhau, bổ sung thông tin về luồng giao thông dữ liệu

Hỗ trợ full duplex, half duplex; đánh dấu checkpointing, adjournment, termination, restart

Data unit: Data

Tầng 6: Presentation Layer

Tầng trình diễn làm nhiệm vụ dịch dữ liệu từ tầng Applicaiton sang dạng Format chung.

Tại máy nhận, lớp này lại chuyển từ Format chung sang dạng tầng Application

Chức năng:

+ dịch mã ASCII sang EBCDIC

+ chuyển đổi dữ liệu

+ nén dữ liệu

+ mã hoá, giải mã dữ liệu

Data unit: Data

Tầng 7: Application Layer

Tầng ứng dụng cung cấp phương tiện cho người dùng truy nhập các thông tin và dữ liệu trên mạng thông qua chương trình ứng dụng

Các ứng dụng: Telnet, giao thức truyền tập tin FTP, giao thức truyền thư điện tử SMTP,

HTTP…

Data unit: Data

Người Việt mình rồi sẽ sống ra sao ?

Nguồn bài: Nhạc sĩ Tuấn Khanh

Đầu năm 2016 này, tập đoàn bán lẻ Walmart của Mỹ công bố cho biết họ đóng cửa đến 154 điểm buôn bán trên toàn nước Mỹ. Nếu tính luôn từ năm 2010 đến này, đã có 269 cửa hàng Walmart đóng cửa trong tổng số 11.000 cửa hàng của tập đoàn này trên toàn thế giới. Con số nhìn vào thì không lớn, nhưng các chuyên gia kinh tế đánh giá đó là bước khởi đầu sự sa sút quan trọng của tập đoàn Walmart.

Việc đóng cửa hàng loạt của tập đoàn Walmart có nhiều nguyên nhân, nhưng một trong những lý do luôn được người dân Mỹ quan tâm, đó là làn sóng chỉ trích các hệ thống bán lẻ của Walmart đã tận dụng nguồn hàng giá rẻ làm từ Trung Quốc, gây thương tổn cho nền kinh tế nước nhà, cũng như gây thiệt hại cho quyền lợi của hàng trăm ngàn người lao động Mỹ.

Việc nhập siêu hàng từ Trung Quốc trong chiến lược tạo giá cạnh tranh tuyệt đối của Walmart thoạt đầu có vẻ như được người tiêu dùng ủng hộ, thế nhưng dần dần người ta nhận ra rằng, việc bán hàng giá rẻ đó cũng là một cách hủy diệt quốc gia.

Amy Traub, nhà phân tích chính sách kinh tế hàng đầu của Mỹ, đã từng tố cáo việc ích kỷ tạo lợi nhuận của các công ty thích nhập hàng rẻ từ Trung Quốc đang tàn phá ngành công nghiệp Mỹ. Riêng với Walmart, bà Amy từng nêu bảng phân tích 10 điểm vô cùng nguy hại. Trong đó, đáng lo ngại nhất là im lặng đẩy mạnh nạn thất nghiệp ở nước Mỹ, lên đến 400,000 người (số liệu 2015), đổi bằng con số 20.000 công nhân Trung Quốc bị bóc lột bằng giá lao động rẻ mạt. Không chỉ riêng Ưalmart, mà tất cả các công ty, hãng xưởng đang có khuynh hướng đặt mua hàng giá rẻ từ Trung Quốc đều phải đối diện với lời chỉ trích nặng nề rằng đã đã khiến một lớp công nhân Mỹ chỉ có thể sống bằng lương tối thiểu, đói nghèo, và các nhà máy nội địa phải đóng cửa.

Trong những ngày ở Mỹ vào năm ngoái, tôi chứng kiến những nhóm xã hội dân sự đấu tranh quyết liệt cho quyền lợi lao động và kinh tế của nước Mỹ. Các nhân viên của các hệ thống bán hàng này được lệnh đi tìm và gỡ bỏ các miếng dán trên các kệ hàng, do các nhà hoạt động xã hội chia nhau đi gắn vào, hoặc đứng trước cửa các cửa hàng đó, với nội dung rất mạnh mẽ “Hãy tẩy chay Walmart”, “Đây không phải là nơi có hàng được sản xuất từ nước Mỹ”, “Hàng Trung Quốc từ Walmart đang hủy diệt nước Mỹ”… Trong làn sóng ấy, các món hàng được sản xuất từ Mỹ, lúc này được in nhãn “made in USA” thật to và kiêu hãnh trên sản phẩm, được mọi người chọn mua như một cách chống lại sự xâm lăng hàng hóa từ Trung Quốc hoặc như mọt động thái ái quốc. Rõ ràng là ở một nơi có ý thức, ngay cả việc được hưởng thụ hàng hoá giá rẻ, người ta cũng phải giật mình và hỏi rằng “rồi công nhân mình sẽ sống ra sao?”.

Người của mình rồi sẽ sống ra sao? Đó là câu hỏi như đang bị lãng quên.

Những mùa hoa trái, nuôi giữ của Việt Nam hàng năm cứ luôn bị hụt hẩng do thương lái Trung Quốc hứa hẹn rồi biến mất trong một chuỗi kế hoạch độc ác. Nông dân ngồi khóc ròng trên vệ đường, người trồng trọt đổ bỏ và cho heo, bò ăn để đỡ xót của vẫn diễn ra hàng năm. Vẫn chưa thấy một quan chức nào đủ dũng khí đập bàn và quát lên rằng “rồi nông dân mình sẽ sống ra sao?”.

Sự lệ thuộc vào nền kinh tế Trung Quốc bởi lòng tham và dốt nát về nội lực quốc gia đang giết mòn đất nước. Cứ nhìn vào số nhập siêu của Việt Nam đối với hàng Trung Quốc mà kinh sợ: Phó giám đốc Trung tâm Thông tin Công nghiệp và Thương mại – tiến sĩ Lê Quốc Phương cho hay con số nhập siêu không ngừng tăng qua các năm, từ khoảng 200 triệu USD năm 2001 lên đến 28,9 tỉ USD vào năm 2014, tức tăng 144 lần. Năm 2015, con số còn cao hơn nữa.

Hiện tại ở Việt Nam, các công ty lớn, vỗ ngực tự xưng là thành đạt là “made in Việt” như Tôn Hoa Sen, Number One (Tân Hiệp Phát)… rồi mới đây là Trà Ô long Tea + Plus của Pepsi cũng đều lệ thuộc nặng nề vào nguồn hàng của Trung Quốc. Tiến sĩ Lê Quốc Phương cho biết trong 94 ngành nghề của Việt Nam, đã có tới 40 ngành chết dính với nguồn từ Trung Quốc. Đó là chưa nói đến độ kém chất lượng của thương phẩm, các sản phẩm độc hại của Trung Quốc đang bủa vây người Việt như một cuộc hủy diệt im lặng, cũng không thấy ai có đủ một trái tim Việt Nam thương giống nòi mà kêu gọi “rồi người Việt mình sẽ sống ra sao?”.

Nhưng bên cạnh đó, mọi người dân Việt Nam cũng cần phải tự hỏi: Hàng Trung Quốc dễ dàng nhập vậy, đem lại nhiều vấn nạn như vậy, mà nhiều năm, sao lắm cơ quan hải quan, kiểm tra tốn kém tiền thuế dân, vẫn “ra vẻ” bất lực. Hơn 300 tấn hoa quả độc hại của Trung Quốc mà từ năm 2014, Cục Quản lý chất lượng nông lâm sản và thủy sản của Việt Nam gửi công văn sang Bắc Kinh, đòi Cục An toàn thực phẩm xuất nhập khẩu Trung Quốc trả lời vì sao cố ý nhập vào Việt Nam, đến 2016 vẫn không thấy hồi âm. Vì sao? Vì cơ quan đồng cấp của Bắc Kinh coi thường Việt Nam, hay vì có quá nhiều uẩn khúc ở cửa khẩu khiến mọi thứ phải im lặng? Loại im lặng mà tiến sĩ Nguyễn Ngọc Hiếu của trường Đại học Việt Đức từng nói rằng loại hàng nhập khẩu từ Trung Quốc chỉ có giá 1 đồng, nhưng nhờ đút lót 3 đồng nên cái gì cũng trôi.

Cái gì cũng trôi, số phận con người, nội lực của một quốc gia cũng trôi đi.

Đã từng có các bài báo, các lời kêu gọi người Việt hãy mua hàng giúp nhau, cứu nhau và những lúc xốn xang, khốn khó. Giữa những lúc thương lái Trung Quốc cười gằn và biến mất, để lại một thị trường của những nong dân Việt nghèo và cả tin đầy những hoảng loạn. Nhưng người Việt tự mình khong thể gồng gánh nhau, níu nhau sống mà thiếu một chính sách quyết liệt với anh “bạn vàng”, mà vốn lâu nay các quan chức có trách nhiệm vẫn vẫn hô hoán với màu sắc sân khấu.

Tết Bính Thân này, hàng trung Quốc lại ngập các cửa khẩu Việt Nam. Những tiếng lo lắng lại bật lên ở nhiều nơi. Những trái dưa hấu, những quà bánh, những cành hoa đẫm mồ hôi người nông dân nghèo Việt Nam lại phải gồng gánh trận đấu không cân sức: hàng giá rẻ và sự tiếp tay của trục ác hám lợi, quên cả đất nước mình. Những mùa Tết mà nông dân buồn thiu chở đầy thuyền hoa Tết ế ẩm trở lại quê, những hàng trái cây bán thảo bán đổ để lấy chút tiền vốn… có thể sẽ tái hiện lại ở năm nay. Thật xót xa. Tôi bỗng lại nhớ những tấm băng-rôn mà những người lao động Mỹ căng trên các ngã đường vào Walmart: “Bring our America Back” (Hãy trả lại nước Mỹ của chúng tôi). Mùa xuân này, tôi cũng muốn giăng một biểu ngữ như vậy, “Hãy trả lại một Việt Nam!”, một Việt Nam của tôi!

5 things I learned from GameLoft summer internship

So my training course at Gameloft will end soon. To be honest, this makes me busy as hell. I didn’t even have time to research my own subjects that I planned before the summer. But it doesn’t matter anymore when I realize the values that this course gave to me.
I’m just going to take note really important things I’ve never ever had before. “Keep it simple, stupid ” right ?

1. Debugging
Debug is not a new word for me, I know what debug is, but how to use it ? and when ?. I’m feeling really stupid right now when have to say that I couldn’t answer that questions. Before I came to this internship, I only wrote algorithms ( not a whole program that uses algorithm ) and one small game, and I used log to find bugs. I also tried to debug once but it didn’t help much.

The point here is in the small programs, print log is really useful, but debug. And otherwise, in the bigger programs ( like the game I’ve coded in GL ), debug is very strong to help you find danger bugs like leak memory, un-handle exceptions, un-defined behaviors… You can also print log to solve that, but I believe it will cost so many time and your health too.

Debug is clearly one of the aspect I’m missing. After the course, I need to find books, tutorials to learn it more

2. How to learn effectively
I have to admit that this 2 months at GL brought to me the amount of knowledge more than I learn in maybe 5 ~ 6 months at home. How can it be ? I’m thinking of 2 reasons’s below:
+ In GL, I work about 6,5 to 7 hours a day ( the same at home ), but that 7 hours is really work: no Facebook, no music, no online newspaper etc…
+ The 3rd thing I’m gonna write

I mean, I used to read so many advices about hard-work, but never had the chance to know how effectively i will bring. And it all depend on your will.

3. Never expect available source-code(s) on the internet
Thanks to C, although we rarely talked to each other but I still learned many things from you. I noticed the way you read carefully every responses to one question on stack overflow, ( I’ve never did that before ).
I used to fear that if I learn something not fast enough, I won’t have time for the remaining one. That’s why, when I met a new technique, new knowledge… I always search for the source-code first, and after that, based on the source, I’ll find out how to implement that technique. All that thinking and action just make me waste more time, not fully understand, and depend on other people.
The correct way here is: many hard techniques don’t have available source, you have to read the idea, have deep understanding about it. Don’t worry about the time, try hard and you will realize that it wastes less than you think. It’s a good practice for programmers.

4. Every programmer should have their own coding guide line ( coding style )
You not only have to write right code, but also clean code !
Not only for computer to understand, but also for people !
The coding guide line is focus on formatting code, you also have to figure out the way to write code shorter, more understandable.

5. Whenever you have the chance to study ( convenient )  new knowledge, take it and training that new thing instead of re-study old stuffs

Happy coding 🙂

MUST-READ BOOKS PART 1

1. The C++ programming language (4th edition )

2. Jumping into C++

3. Effective modern C++: 42 specific ways to improve your use of C++ 11 and C++ 14

4. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)

5. Programming: Principles and Practice Using C++ (2nd edition )

6. Effective STL

7. C++ Primer  ( 5th edition )

8. Accelerated C++: Practical Programming by Example

9. Clean Code

10. Code complete