Không chỉ có những trang web chia sẻ mà ngay cả phương pháp chia sẽ dữ
liệu P2P phổ biến hiện nay cũng đang gặp nguy hiểm. 2 nạn nhân đầu tiên
chính là utorrent và Demonoid, cái tên rất quen thuộc với dân download
Việt Nam.
Demonoid, một trong những trang torrent nổi tiếng nhất hiện nay, đã bị
đánh sập. Đây không phải là lần đầu tiên, tuy nhiên lần này có sự nhúng
tay của IPFI, tổ chức chống vi phạm bản quyền nổi tiếng nhờ sự kiện đóng
cửa Megaupload cách đây không lâu. Với việc tên miền Demonoid.me,
Demonoid.com và Demonoid.ph đang bị rao bán tạo Sedo, tất cả hy vọng trở
lại của Demonoid hoàn toàn tan biến.
Demonoid đã không còn
IPFI cho biết họ đang mở cuộc điều tra tại Mexico, nơi được cho là nơi ở
của admin Demonoid. Điều này đồng nghĩa với khả năng một cuộc kiện tụng
đình đám nữa sẽ nổ ra tương tự như với Kim Dot Com, ông chủ của
Megaupload.
Bên cạnh đó, một tin không vui cho giới chơi torrent là utorrent, chương
trình khá phổ biến tại Việt Nam, sẽ bị tích hợp quảng cáo. Trên lý
thuyết, điều này không có nhiều ảnh hưởng tới người sử dụng nhưng thực
tế thì hoàn toàn ngược lại.
utorrent cũng sắp nối bước
Công ty mẹ của chương trình này nhắm đến hàng loạt các nhà tài trợ "có
bản quyền", đi ngược lại với mục đích của dân chơi torrent. Không dừng
lại ở đó, quảng cáo này sẽ tích hợp thẳng vào bên trong chương trình
khiến người sử dụng rất khó né tránh, chưa kể là một số được thiết lập
dưới dạng "torrent tài trợ" sẽ gây khó khăn cho "công việc ngoài lề" của
chúng ta. Nếu tiếp tục, không loại trừ khả năng trong tương lai
utoorent chỉ còn có thể download những nội dung "có bản quyền" mà thôi.
2 ông lớn đã ngã, hay chính xác hơn là 1 ngã một sắp bị thâu tóm. Tương lai của torrent sẽ đi về đâu?
Các đối tượng kiểu struct tm được sử dụng để lưu trữ ngày tháng và thời gian.
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year; //year since 1900
int tm_wday; //days since Sunday
int tm_yday; //days since 1 January: [0,365]
int tm_isdst; //daylight saving time flag
}
Cờ tm_isdst là số dương (+) nếu daylight saving time có tác dụng, bằng 0 nếu không có, là số âm (-) nếu không có thông tin.
Mã quy cách Ý nghĩa
%a Tên ngày trong tuần viết tắt
%A Tên ngày trong tuần đầy đủ
%b Tên tháng viết tắt
%B Tên tháng đầy đủ
%c Date và time
%d Ngày trong tháng
%H Giờ trong ngày, 24 giờ
%h Giờ trong ngày, 12 giờ
%j Ngày trong năm
%m Tháng
%M Phút sau giờ
%p AM hay PM
%s Giây trong giờ
%U Tuần trong năm
%w Ngày trong tuần (0-6)
%x Date
%X Time
%y Năm trong thế kỷ
%Y Năm
%Z Múi giờ
%% Ký tự %
Truy nhập vào đồng hồ
clock_t clock (void);
Đây là số xung đồng hồ của máy. Muốn tính ra giây, ta đem chia với
CLOCK_PER_SEC. Nếu tạo xung đồng hồ của CPU không có, hàm trả lại giá
trị 1.
Truy nhập vào thời gian
double difftime (time_t t0, time_t t1);
char *asctime (const struct tm *tp);
size_t strftime (char *s, size_t n, const char *cntrl_str, const struct tm*tp);
structtm *gmtime (const time_t *t_ptr);
struct tm *localtime (const time_t *t_ptr);
time_t mktime (struct tm *tp);
time_t time (time_t *timer); nhận thời gian hệ thống quy ra giây
void getdate (struct date *datep); nhận ngày hệ thống
void setdate (struct date *datep); thiết lập ngày hệ thống
void gettime (struct time *timep); nhận giờ hệ thống
void settime (struct time *timep); thiết lập giờ hệ thống
THƯ VIỆN STRING.H
Các hàm quản lý bộ nhớ
int memcmp (const void *s1, const void *s2, size_t n); so sánh n byte trong 2 chuỗi s1, s2 (phân biệt chữ hoa, chữ thường)
Nếu giá trị trả về >0 thì chuỗi s1 > chuỗi s2
Nếu giá trị trả về <0 thì chuỗi s2 < chuỗi s1
Nếu giá trị trả về =0 thì chuỗi s2 giống chuỗi s1
int memicmp (const void *s1, const void *s2, size_t n); so sánh n byte
trong 2 chuỗi s1, s2 (không phân biệt chữ hoa, chữ thường)
Nếu giá trị trả về >0 thì chuỗi s1 > chuỗi s2
Nếu giá trị trả về <0 thì chuỗi s2 < chuỗi s1
Nếu giá trị trả về =0 thì chuỗi s2 giống chuỗi s1
void *memchr (const void *s, int c, size_t n); tìm ký tự c trong n byte
đầu của vùng s, nếu tìm thấy, hàm trả về địa chỉ của byte chứa ký tự c
đầu tiên trong s, trái lại, trả về NULL
void *memccpy (void *dest, const void *src, int c, size_t n); sao chép
các ký tự từ vùng src sang vùng dest, việc sao chép kết thúc khi gặp ký
tự c hoặc đã sao chép đủ n ký tự
void *memcpy (void *dest, const void *src, size_t n); sao chép n ký tự từ vùng src sang vùng dest, hàm cho lại địa chỉ vùng dest
void *memmove (void *dest, const void *src, size_t n);
void *memset (void *s, int c, size_t n); gửi ký tự c vào n byte đầu của chuỗi s, hàm trả lại địa chỉ chuỗi s
void movedata (unsigned srcseg, unsigned srcoff, unsigned destseg,
unsigned destoff, size_t n); sao chép n byte từ phân đoạn srcseg:srcoff
đến địa chỉ destseg:destoff
Các hàm quản lý xâu ký tự
char *gets (char *s); nhập chuỗi
char *puts (char *s); xuất chuỗi
char *strcat (char *s1, const char *s2); ghép chuỗi s2 vào đuôi chuỗi s1
char *strchr (const char *s, int c); tìm ký tự c trong chuỗi s (bắt đầu từ bên trái), không có trả về NULL
char *strcpy (char *s1, const char *s2); sao chép nội dung trong s2 vào trong s1
char *strdup (const char *s); gấp đôi chuỗi s
char *strerror (int error_number);
char *strlwr (char *s); đổi chuỗi s thành chữ thường
char *strncat (char *s1, const char *s2, size_t n);
char *strncpy (char *s1, const char *s2, size_t n); sao chép tối đa n ký tự đầu của chuỗi s2 vào trong s1
char *strnset (char *s, int c, int n); gán n lần ký tự c vào trong chuỗi s
char *strpbrk (const char *s1, const char *s2); tìm lần xuất hiện đầu
tiên của một ký tự thuộc s2 trong s1, nếu có, hàm cho địa chỉ của ký tự
tìm thấy trong s1, trái lại, hàm cho NULL
char *strrchr (const char *s, int c); tìm ký tự c trong chuỗi s (bắt đầu từ bên phải), không có trả về NULL
char *strrev (char *s); đảo ngược các ký tự trong chuỗi s
char *strset (char *s, int c); đặt ký tự c vào mọi vị trí trong chuỗi s (thay các ký tự trong s bằng c)
char *strstr (const char *s1, const char *s2); tìm chuỗi s2 trong chuỗi s1, trả về vị trí chuỗi s2 trong chuỗi s1
char *strtok (char *s1, const char *s2);
char *strupr (char *s); đổi chuỗi s thành chữ hoa
int strcmp (const char *s1, const char *s2); trả về kết quả so sánh 2
chuỗi s1 và s2, không phân biệt chữ hoa, chữ thường của cùng một ký tự
Nếu giá trị trả về >0 thì chuỗi s1 chứa chuỗi s2
Nếu giá trị trả về <0 thì chuỗi s2 chứa chuỗi s1
Nếu giá trị trả về =0 thì chuỗi s2 giống chuỗi s1
int strcoll (const char *s1, const char *s2);
int stricmp (const char *s1, const char *s2); trả về kết quả so sánh 2
chuỗi s1 và s2, phân biệt chữ hoa, chữ thường của cùng một ký tự
Nếu giá trị trả về >0 thì chuỗi s1 chứa chuỗi s2
Nếu giá trị trả về <0 thì chuỗi s2 chứa chuỗi s1
Nếu giá trị trả về =0 thì chuỗi s2 giống chuỗi s1
int strncmp (const char *s1, const char *s2, size_t n); so sánh n ký tự đầu tiên của chuỗi s1 và s2
int strnicmp (const char *s1, const char *s2, size_t n); so sánh n ký tự
đầu tiên của chuỗi s1 và s2, không phân biệt chữ hoa, chữ thường của
cùng một ký tự
size_t strcspn (const char *s1, const char *s2); tìm độ dài đoạn đầu của chuỗi
size_t strlen (const char *s); xác định chiều dài chuỗi s
size_t strspn (const char *s1, const *s2); tìm độ dài đoạn đầu của chuỗi
size_t strxfrm (char *s1, const char *s2, size_t n);
unsigned *strlen (const char *s); xác định chiều dài chuỗi s
THƯ VIỆN STDLIB.H
File tiêu đề này chứa các nguyên mẫu của các hàm được sử dụng vào các
mục đích chung, hoặc với các macro và các định nghĩa kiểu có liên quan.
Cấp phát bộ nhớ động
unsigned coreleft (void); cho biết bộ nhớ khả dụng trong vùng cấp phát động đối với mô hình tiny, small và medium
unsigned long coreleft (void); cho biết bộ nhớ khả dụng trong vùng cấp phát động đối với mô hình compact large và huge
void *calloc (size_t n, size_t size); cấp phát vùng nhớ cho n đối tượng kích cỡ size byte
void *malloc (size_t size); cấp phát vùng nhớ cho size byte
void *realloc (void *block, size_t size); cấp phát lại bộ nhớ
void free (void *block); giải phóng vùng nhớ đã cấp phát
Tạo số nhẫu nhiên
int random (int n); tạo các số ngẫu nhiên trong khoảng từ 0 đến (num-1)
int rand (void); tạo số ngẫu nhiên trong khỏang từ 0 đến 32767
void randomize (void); khởi động cơ chế tạo số ngẫu nhiên bằng giá trị ngẫu nhiên
void srand (unsigned seed); khởi tạo bộ tạo số ngẫu nhiên bằng giá trị seed, không có giá trị trả lại
Truyền thông với môi trường
char *getenv (const char *name);
int system (const char *s);
Số học
int abs (int x);
long labs (long x);
div_t div (int numer, int denom);
ldiv_t ldiv (long numer, long deniom);
Chuyển đổi xâu ký tự
char *itoa (int x, char *s, int cs); chuyển số nguyên x trong hệ đếm cơ
số cs sang chuỗi và lưu vào vùng nhớ s, hàm trả về địa chỉ của vùng s
char *ltoa (long x, char *s, int cs); chuyển số kiểu long x trong hệ đếm
cơ số cs sang chuỗi và lưu vào vùng nhớ s, hàm trả về địa chỉ của vùng s
char *ultoa (unsigned long x, char *s, int cs); chuyển số kiểu unsigned
long x trong hệ đếm cơ số cs sang chuỗi và lưu vào vùng nhớ s, hàm trả
về địa chỉ của vùng s
double atof (const char *s); chuyển đổi xâu các chữ số str thành một số float
int atoi (const char*s); chuyển đổi xâu các chữ số str thành một số int
long atol (cont char *s); chuyển đổi xâu các chữ số str thành một số long
double strtod (const char *s, char **end_ptr);
long strtol (const char *s, char **end_ptr, int base);
unsigned long strtoul (const char *s, char **end_ptr, int base);
char *ecvt (double value, int ndig, int *dec, int *sign); chuyển giá trị kiểu double sang chuỗi chỉ gồm các chữ số
char *fcvt (double value, int ndig, int *dec, int *sign); chuyển giá trị kiểu double sang chuỗi chỉ gồm các chữ số
char *gcvt (double value, int ndec, char *buf); chuyển giá trị kiểu
double sang chuỗi có cả dấu chấm thập phân và dấu (-) cho số âm
Các hàm ký tự nhiều byte
int mblen (const char *s, size_t n);
int mbrowc (wchar_t *p, const char *s, size_t n);
int wctomb (char *s, wchar_t wc);
Các hàm xâu ký tự nhiều byte
size_t mbstowcs (wchar_t *wcs, const char *mbs, size_t n);
int wcstombs (char *mbs, const wchar_t *wcs, size_t n);
Rời khỏi chương trình
void abort (void); kết thúc chương trình một cách không bình thường
int atexit (atexit_t func);
void exit (int status); kết thúc chương trình một cách bình thường
extern int _wscroll;
int cputs (const char *str);
int fgetc (FILE *stream);
int fputc (int c, FILE *stream);
int getch (void); đọc một ký tự từ bàn phím, không hiện lên ký tự gõ vào
int getche (void); đọc một ký tự từ bàn phím, có hiện lại ký tự gõ vào. Ký tự e cuối có nghĩa là hiện lại (echo)
int gettext (int x1, int y1, int x2, int y2, void *destin);
int inp (unsigned portid);
int kbhit (void); kiểm tra xem có ký tự gõ vào hay không
Ví dụ:
#include
#include
main()
{
clrscr();
cout<<"Press any key";
while (!kbhit());
cout<<"\r\Continue\r\n";
return 0;
getch();
}
int movetext (int x1, int y1, int x2, int y2, int destleft, int desttop);
int outp (unsigned portid, int value);
int putch (int c); đưa một ký tự lên cửa sổ văn bản trên màn hình
int puttext (int x1, int y1, int x2, int y2, void *source);
int textmode (int mode);
int ungetch (int c);
int wherex (void); cho biết hoành độ hiện tại của con trỏ
int wherey (void); cho biết tung độ hiện tại của con trỏ
void _setcursortype (int cur_t);
void clrscr (void); xoá trắng màn hình (Clear Screen)
void clreol (void); xoá các ký tự nằm bên phải điểm nhắc (Clear End Of Line)
void delline (void); xoá một dòng trong cửa sổ
void gettextinfo (struct text_info *r); cho thông tin về kiểu hiển thị văn bản
void gotoxy (int x, int y); di chuyển con trỏ tới tọa độ (x,y) trên màn hình
void highvideo (void); làm độ sáng của ký tự tăng lên
void insline (void); xen một dòng trong cửa sổ
void lowvideo(void); làm độ sáng của ký tự yếu đi
void normvideo(void); làm độ sáng của ký tự bình thường
void textbackground (int color); chọn màu nền
void textcolor(int color); lựa chọn màu ký tự mới
void textattr (int attr); xác lập thuộc tính của ký tự trên màn hình
void window (int x1, int y1, int x2, int y2); tạo cửa sổ văn bản có tọa
độ 2 góc: góc trên-bên trái (x1,y1) và góc dưới-bên phải (x2,y2). Sau
đó, mọi văn bản trên màn hình sẽ nằm trong cửa sổ này.
THƯ VIỆN STDIO.H
File tiêu đề này chứa các macro, các định nghĩa kiểu và các nguyên mẫu
prototype của các hàm được người lập trình sử dụng để truy nhập vào
file. Sau đây là một số macro và các định nghĩa kiểu:
#define BUFSIZ 1024 //kích thước cho tất cả cá bộ nhớ đệm
#define EOF (-1) //giá trị trả lại của End Of File
#define FILENAME_MAX 255 //độ dài lớn nhất tên file
#define FOPEN_MAX 20 //số file lớn nhất có thể mở
#define L_tmpnam 16 //kích thước mảng cho tmp tên file
#define NULL 0 //giá trị con trỏ NULL
#define PATH_MAX 1024 //độ dài cực đại của đường dẫn
#define TMP_MAX 65535 //số lớn nhất của các tên file duy nhất
typedef long pos_t; //được sử dụng với fsetpos()
typedef unsigned size_t //kiểu từ toán tử sizeof
typedef char *va_list; //được sử ụng với họ vfprintf()
Cấu trúc file với từ khoá FILE có các thành phần mô tả trạng thái hiện
tại của một file. Tên và số phần tử của nó phụ thuộc vào từng hệ thống
Một đối tượng kiểu FILE có thể ghi tất cả các thông tin cần thiết để
điều khiển một luồn (stream), kể cả một hiển thị hay cờ thông báo
(indicator) vị trí của file, một con trỏ tới buffer của nó, một hiển thị
hay cờ báo lỗi chứa các lỗi ghi/đọc có thể xảy ra, và một hiển thị hay
cờ báo end of file để ghi nhận đã gặp dấu hiệu kết thúc file chưa.
Các macro được dùng để định nghĩa stdin, stdout và stderr. Mặc dù chúng
ta nghĩ chúng là các file, song thực chất chúng là cá con trỏ.
Không giống các file khác,stdin, stdout và stderr không cần phải mở ra một cách tường minh.
Một số macro khác được sử dụng với các hàm như sau:
#define _IOFBF 0 //setvbuf(): full buffering
#define _IOFBF 0x80 //setvbuf(): full buffering
#define _IOFBF 0x04 //setvbuf(): full buffering
#define SEEK_SET 0 //fseek(): beginning of file
#define SEEK_CUR 1 //fseek(): current position in file
#define SEEK_END 2 //fseek(): end of file
Khi một file được mở, hệ điều hành kết nối nó với một stream và giữ
thông tin về stream trong một đối tượng kiểu FILE. Một con trỏ trỏ tới
FILE có thể xem như đang được kết nối với file đó hoặc với luồng stream,
hoặc cả hai.
Các hàm cấp 2
Các hàm cấp 2 sử dụng cấu trúc FILE và mã kết thúc EOF, tất cả đều được
khai báo và định nghĩa trong . Mã EOF bằng -1 còn cấu trúc FILE gồm các
thành phần dung để quản lý tập tin như:
+ level cho biết có còn vùng đệm trong dữ liệu hay không
+ bsize độ lớn vùng đệm (mặc định là 512 bytes)
+ flags các cờ trạng thái
FILE *fdopen (int handle, char *type);
FILE *fopen (const char *filename, const char *mode); mở một file
Các đối (mode)
"r", "rt" mở một file để đọc theo kiểu văn bản, file cầ tồn tại, nếu không sẽ có lỗi
"w", "wt" mở một file để ghi theo kiểu văn bản, nếu file đã tồn tại, nó sẽ bị xoá
"a", "at" mở một file để ghi bổ sung theo kiểu văn bản, nếu file chưa tồn tại thì tạo file mới
"rb" mở một file để đọc theo kiểu nhị phân, file cần tồn tại, nếu không sẽ có lỗi
"wb" mở một file để ghi theo kiểu nhị phân, nếu file đã tồn tại, nó sẽ bị xoá
"ab" mở một file để ghi bổ sung theo kiểu nhị phân, nếu file chưa tồn tại thì tạo file mới
"r+", "r+t" mở một file để đọc/ghi theo kiểu văn bản, file cần tồn tại, nếu không sẽ có lỗi
"w+", "w+t" mở một file mới để đọc/ghi theo kiểu văn bản, nếu file đã tồn tại, nó sẽ bị xoá
"r+b" mở một file để đọc/ghi theo kiểu nhị phân, file cần tồn tại, nếu không sẽ có lỗi
"w+b" mở một file mới để đọc/ghi theo kiểu nhị phân, nếu file đã tồn tại, nó sẽ bị xoá
"a+b" mở một file để đọc/ghi bổ sung theo kiểu nhị phân, nếu file chưa tồn tại thì tạo file mới
int fclose (FILE *stream); đóng một file
int fcloseall (void); đóng tất cả các file đang mở
int fflush (FILE *stream); xoá vùng đệm bàn phím
int flushall (void); xoá vùng đệm bàn phím, thường sử dụng trước các hàm như gets hoặc scanf
FILE *freopen (const char *filename, const char *mode, FILE *fp);
FILE *_fsopen (const char *filename, const char *mode, int shflg);
void setbuf (FILE *stream, char *buf);
int setvbuf (FILE *stream, int mode, size_t n);
FILE *tmpfile (void);
char *tmpnam (char *s);
Truy nhập vào cờ vị trí file
int fseek (FILE *stream, long offset, int whence); chuyển con trỏ đến vị trí bất ký trên file (nên dùng theo kiểu nhị phân)
long ftell (FILE *stream); cho biết vị trí hiện tại của con trỏ chỉ vị
void rewind (FILE *stream); chuyển con trỏ về vị trí đầu file
int fgetpos (FILE *stream, fops_t *pos);
int fsetpos (FILE *stream, const fops_t *pos);
Quản lý lỗi
void clearer (FILE *stream);
int feof (FILE *stream); cho biết đã đến cuối file hay chưa
int ferror (FILE *stream); cho biết có lỗi (khác 0) hay không có lỗi (bằng 0)
void perror (const char *s); thông báo lỗi trên màn hình (khi biết có lỗi)
Các hàm xuất/nhập ký tự
int getc (FILE *stream); đọc ký tự từ file
int getchar (void); nhận một ký tự từ stdin, hàm trả về ký tự nhận được
char *gets (char *s); nhập một chuỗi ký tự từ stdin
int fgetc (FILE *stream); đọc ký tự từ file
char *fgets (char *c, int n, FILE *stream); đọc một chuỗi ký tự từ file
int fputc (int c, FILE *stream); ghi ký tự lên file
int fputs (const char *s, FILE *stream); ghi một chuỗi ký tự lên file
int putc (int c, FILE *stream); ghi ký tự lên file
int putchar (int c); đưa một ký tự ra stdout
int puts (const char *s); đưa một chuỗi ký tự ra stdout
int ungetc (int c, FILE *stream);
Các hàm nhập xuất theo kiểu văn bản
int cprintf (const char *format [,argument,...]);
int cscanf (const char *format [,address,...]);
int fprintf (FILE *stream, const char *format [,argument,...]); ghi dữ liệu theo khuôn dạng lên file
int fscanf (FILE *stream, const char *format [,address,...]); đọc dữ liệu theo khuôn dạng từ file
int printf (const char *format [,argument,...]); xuất dữ liệu theo định dạng
int scanf (const char *format [,address,...]); nhập dữ liệu theo định dạng
int sprintf (char *buffer, const char *format [,argument,...]);
int sscanf (const char *buffer, const char *format [,address,...]);
int vfprintf (FILE *stream, const char *format, va_list arglist);
int vfscanf (FILE *stream, const char *format, va_list arglist);
int vprintf (const char *format, va_list arglist);
int vscanf (const char *format, va_list arglist);
int vsprintf (char *buffer, const char *format, va_list arglist);
int vsscanf (char *buffer, const char *format, va_list arglist);
Các hàm nhập xuất theo kiểu nhị phân
int getw (FILE *stream); đọc một số nguyên từ file
int putw (int w, FILE *stream); ghi một số nguyên lên file
size_t fread (void *ptr, size_t size, size_t n, FILE *stream); đọc một số mẫu tin từ file
size_t fwrite (void *ptr, size_t size, size_t n, FILE *stream); ghi một số mẫu tin lên file
Xoá hoặc đổi tên file
int remove (const char *filename); xoá một file
int rename (const char *filename1, const char *filename2); đổi tên một file
int unlink (const char *filename); xoá một file
Các hàm nhập xuất cấp 1
Các file tiêu đề và biến chuẩn
Để sử dụng các hàm cấp 1, ta cần tới các file tiêu đề sau:
io.h chứa các nguyên mẫu của các hàm cấp 1
fcntl.h chứa các định nghĩa quyền truy nhập (access)
sys/stat.h chứa các định nghĩa thuộc tính (mode)
dos.h chứa các định nghĩa thuộc tính (attribute) theo DOS
Ngoài ra, còn cần đến biến chuẩn của C _fmode (định nghĩa trong fcntl.h
và stdlib.h) để xác định kiểu nhập xuất (nhị phân hay văn bản)
int creat (const char *path, int mode); tạo một file mới có thuộc tính cho bởi mode. Trong trường hợp file đã tồn tại:
-Nếu file để ghi, nó sẽ bị xoá
-Nếu file để đọc thì bị lỗi
-Khi có lỗi, hàm trả về -1
-Khi thành công, hàm trả về số hiệu file (handle)
Thuộc tính
S_IREAD file để đọc, không thể xoá, sửa chữa, bổ sung
S_IWRITE file để ghi, có thể xoá, sửa chữa, bổ sung
int _creat (const char *path, int attrib); tạo một file mới theo kiểu nhị phân
Thuộc tính
FA_RDONLY file chỉ đọc, không thể xoá, sử chữa, bổ sung
FA_ARCH file để ghi
FA_HIDDEN file ẩn, không hiện trong lệnh DIR của DOS
int open (const char *path, int access [, unsigned mode ]); mở một file đã có hoặc xây dựng file mới để đọc, ghi
Đối access
Giá trị Ý nghĩa
O_APPEND ghi bổ sung
O_BINARY kiểu nhập xuất nhị phân
O_CREAT tạo file (nếu chưa có)
O_RDONLY chỉ đọc
O_RDWR đọc và ghi
O_TEXT kiểu nhập xuất văn bản
O_TRUNC xoá file nếu có tồn tại
O_WRONLY nbsp;chỉ ghi
int _open (const char *filename, int oflag); mở một file đã tồn tại để đọc, ghi
int close (int handle); đóng một file
int _close (int handle); đóng một file
int chmod (const char *path, int amode); thay đổi thuộc tính file
int _chmod (const char *path, int func [, int attrib ]); thay đổi thuộc tính file theo kiểu DOS
int write (int handle, void *buf, unsigned len); ghi một dãy các byte
lên file, nếu thành công, hàm trả về môt số bằng số byte ghi được, có
lỗi trả về -1
int read (int handle, void *buf, unsigned len); đọc một dãy các byte từ file
long lseek (int handle, long offset, int fromwhere); di chuyển con trỏ chỉ vị
DANH MỤC CÁC HÀM TRONG THƯ VIỆN ĐỒ HỌA
arc vẽ cung tròn có góc bắt đầu, góc kết thúc, tọa độ tâm
bar vẽ hình chữ nhật có tô bên trong bar3d vẽ hình chữ nhật theo không gian 3 chiều có tô bên trong
circle vẽ hình tròn
cleardevice xoá màn hình, đưa con trỏ về góc trên-bên trái
clearviewport xoá khung hình
closegraph đóng chế độ đồ họa
detectgraph kiểm tra phần cứng và xác định trình điều khiển và chế độ
drawpoly vẽ đa giác với kiểu nết vẽ và màu hiện tại
ellipse vẽ cung elip
fillellipse vẽ hình elip có tô màu
fillpoly tô đa giác có sử dụng bộ chuyển đổi quét
floodfill tô một miền bị chặn, dung mẫu tô và màu hiện tại
getarccoords nhận lại tọa độ để vẽ cung
getaspectratio trả lại hệ số tương quan tỷ lệ trên màn hình
getbkcolor nhận lại màu nền hiện tại
getcolor nhận lại màu vẽ hiện tại
getdefaultpalette nhận lại bảng màu ngầm định
getdrivername nhận lại tên vỉ mạch đồ họa
getfillpattern nhận lại mẫu tô
getfillsettings nhận lại mẫu tô được thiết lập mới nhất
getgraphmode nhận lại chế độ đồ họa hiện tại
getimage cất ảnh bit của một vùng hình vào trong bộ nhớ đệm
getlinesettings nhận lại kiểu vẽ, nét vẽ và độ dày nét vẽ
getmaxcolor nhận lại giá trị màu lớn nhất có thể có của chế độ đồ họa
getmaxmode nhận lại giá trị chế độ cao nhất có thể có
getmaxx nhận lại giá trị độ phân giải ngang
getmaxy nhận lại giá trị độ phân giải dọc
getmodename nhận lại tên chế độ đồ họa
getmoderamge nhận lại chế độ lớn nhất và thấp nhất của vỉ đồ họa
getpalettesize nhận lại giá trị bảng màu
getpixel nhận lại màu của điểm vẽ
getpalette nhận lại giá trị bảng màu
gettextsettings nhận lại giá trị về kiểu chữ, hướng viết, kích thước
getviewsettings nhận lại thông tin về khung hình và các tham số
getx nhận lại tọa độ x của vị trí đồ họa hiện tại
gety nhận lại tọa độ y của vị trí đồ họa hiện tại
graphdefaults đưa vị trí con trỏ hiện tại về góc trên bên trái, khởi động lại chế độ đồ họa
grapherrormsg nhận lại các xâu ký tự thông báo lỗi cho errorcode
graphresult nhận lại giá trị báo lỗi của thao tác đồ họa cuối cùng
imagesize trả lại giá trị số byte cần thiết để cất một vùng chữ nhật trên màn hình
intalluserdrive cài đặt các trình điều khiển đồ họa mới vào bảng BGI
intalluserfont cài đặt một font chữ mới chưa ó trong hệ thống BGI
initgraph khởi tạo đê vào chế độ đồ họa
line vẽ một đoạn thẳng giữa 2 điểm chỉ rõ
linerel vẽ một đoạn thẳng với khoảng cách tương đối
lineto vẽ một đoạn thẳng từ điểm hiện tại tới...
moverel dịch chuyển vị trí hiện tại tới điểm mới theo tọa độ tương đối
moveto dịch chuyển vị trí hiện tại tới điểm mới
outtext viết ra dòng văn bản tại vị trí hiện tại
outteaxtxy viết ra dòng văn bản tại vị trí (x,y)
pieslice vẽ một miếng bánh tròn
putimage nạp hình ảnh bit vào màn hình
putpixel vẽ một điểm ảnh tại tọa độ (x,y)
rectangle vẽ hình chữ nhật không tô bên trong với màu và nét vẽ hiện tại
registerbgidriver đăng ký trình điều khiển BGI với hệ thống đồ họa
registerbgifont đăng ký font BGI với hệ thống đồ họa
restorecrtmode khôi phục lại chế độ màn hình gốc trước khi chế độ đồ họa được khởi tạo để dùng
sector vẽ và tô một miếng khung hình elip
setactivepage thay đổi trang tích cực để cho ra đồ họa
setallpalette thay đổi toàn bộ bảng màu
setaspectratio thay đổi tỷ lệ tương quan ngang dọc
setbkcolor đặt màu nền
setcolor đặt màu vẽ hiện tại
setfillpattern đặt mẫu tô do người dung định nghĩa
setfillstyle đặt mẫu và màu tô
setgraphbufsize thay đổi kích thước bộ nhớ đệm để quét và tô
setgraphmode đặt hệ thống tới chế độ đồ họa và xoá màn hình
setlinestyle đặt kiểu nét vẽ
setpalette thay đổi giá trị bảng màu
setrgbppalette thay đổi giá trị bảng màu cho vỉ mạch IBM8514 và VGA
settextjustify đặt chế độ căn lề cho outtext và outtextxy
settexttyle thiết lập font chữ, hướng, kích thước viết chũ đồ họa
setusercharsize thay đổi độ rộng và chiều cao font vector
setviewport thiết lập khung nhình đồ họa
setvisualpage thiết lập số trang nhìn
setwritemode thiết lập cách thức ghi lên màn hình vẽ là COPY đè lên hay XNOR
textheight trả lại độ cao của xâu chữ, tính theo pixel
textwidth trả lại độ rộng củ xâu chữ, tính theo pixel
THƯ VIỆN PROCESS.H
Các hàm kiểm soát quá trình
int system (const char *command); thực hiệm một câu lệnh DOS, thành công trả về 0, có lỗi trả về -1
void abort (void); kết thúc chương trình một cách không bình thường
void exit (int status); kết thúc chương trình một cách bình thường
THƯ VIỆN MATH.H
Các hàm toán học dấu chấm động
double acos (double x); trả về arc cosine của x, được biểu diễn từ 0 đến Л
double asin (double x); trả về arc sine của x, được biểu diễn từ -Л/2 đến Л/2
double atan (double x); trả về arc tangent của x, được biểu diễn từ -Л/2 đến Л/2
double atan2 (double x, double y); trả về arc tangent của x/y, được biểu diễn từ -Л đến Л
double cabs (struct complex x); trả về giá trị tuyệt đối của số phức x
double ceil (double x); trả về phần nguyên của số chấm động không nhỏ hơn x (làm tròn số lên)
double cos (double x); trả về cos của x, được biểu diễn theo radian
double cosh (double x); trả về giá trị cosine hyperbolic của x
double exp (double x); trả về ex
double fabs (double x); trả về giá trị tuyệt đối của số thực x
double floor (double x); trả về phần nguyên của số chấm động không lớn hơn x (làm tròn số xuống)
double fmod (double x, double y); lấy phần dư của phép chia (x/y), y phải khác 0
double frexp (double x, int *exponent); lấy phần giá trị của x khi tách nhỏ m trong khoảng 0,5 đến 1 hay m=0
double ldexp (double x, int exponent);
double log (double x); trả về logarit tự nhiên của x
double log10 (double x); trả về logarit cơ số 10 của x
double modf (double x, double *ipart); tách số x thành phần số nguyên và
phần số lẻ sau dấu chấm thập phân, cất phần nguyên trong *ipart và trả
về phần lẻ
double pow (double x, double y); trả về xy
double pow10 (int x); trả về x10
double sin (double x); trả về sin của x, được biểu diễn theo radian
double sinh (double x); trả về giá trị sine hyperbolic của x
double sqrt (double x); trả về căn bậc 2 của x
double tan (double x); trả về tang của x, được biểu diễn theo radian
double tanh (double x); trả về giá trị tangent hyperbolic của x
int abs (int x); trả về giá trị tuyệt đối của số nguyên x
long double cabsl (struct complexl (x));
long double frexp (long double (x));
long double fabsl (long double @E (x));
long double frexp (long double (x), int *(exponent));
long double ldexpl (long double (x), int (exponent));
long double modfl (long double (x), long double *(ipart));
long double pow101 (int (x)); trả về x101
long int labs (long int x);
THƯ VIỆN DOS.H
Các hàm truy nhập trực tiếp vào bộ nhớ
char peekb (unsigned segment, unsigned offset); nhận một byte tại địa chỉ phân đoạn segment:offset
int peek (unsigned segment, unsigned offset); nhận lại một từ tại địa chỉ phân đoạn segment:offset
void poke (unsigned segment, unsigned offset, int value); gửi giá trị nguyên value vào bộ nhớ tại địa chỉ phân đoạn segment:offset
void pokeb (unsigned segment, unsigned offset, char value); gửi giá trị ký tự value vào bộ nhớ tại địa chỉ phân đoạn segment:offset
THƯ VIỆN DIR.H
Các hàm kiểm soát thư mục
char *getcwd (char *buf, int buflen); lấy tên thư mục chủ, hàm trả về buf
int chdir (const char *path); đổi thư mục chủ (có đường dẫn), nếu thành công trả về 0, có lỗi trả về -1
int findfirst (const char *pathname, struct ffblk *ffblk, int attrib);
tìm file trên thư mục (có đường dẫn, thuộc tính), nếu tìm thấy trả về 0,
có lỗi trả về -1
int findnext (struct ffblk *ffblk); tiếp tục tìm file trên thư mục theo
các chỉ dẫn cho trong ffblk, nếu tìm thấy trả về 0, có lỗi trả về -1
int getcurdir (int driver, char *directory); chuyển thư mục hiện hành), nếu thành công trả về 0, có lỗi trả về -1
int mkdir (const char *path); tạo thư mục mới (có đường dẫn), nếu thành công trả về 0, có lỗi trả về -1
int rmdir (const char *path); xoá thư mục (có đường dẫn), nếu thành công trả về 0, có lỗi trả về -1
THƯ VIỆN CTYPE.H
Các hàm quản lý, kiểm tra ký tự
int isalnum (int c); trả về khác 0 nếu c biểu diễn một ký tự alphanumeric (chữ cái hay chữ số)
int isalpha (int c); trả về khác 0 nếu c biểu diễn một ký tự chữ alphabetic (A-Z hay a-z)
int isascii (int c); trả về khác 0 nếu c biểu diễn một ký tự có mã ASCII từ 0-127
int iscntrl (int c); trả về khác 0 nếu c biểu diễn một ký tự điều khiển, có mã ASCII từ 0 đến 0x1F hoặc mã bằng 0x7F (DEL)
int isdigit (int c); trả về khác 0 nếu c biểu diễn một ký tự số (0-9)
int isgraph (int c); trả về khác 0 nếu c biểu diễn một ký tự in được, có mã ASCII từ 0x21 đến 0x7E (không kể ký tự khoảng trống)
int islower (int c); trả về khác 0 nếu c biểu diễn một ký tự chữ thường (a-z)
int isprint (int c); trả về khác 0 nếu c biểu diễn một ký tự in được, có mã ASCII từ 0x20 đến 0x7E (kể cả ký tự khoảng trống)
int ispunct (int c); trả về khác 0 nếu c biểu diễn một ký tự dấu (khác ký tự alphanumeric và ký tự khoảng trống)
int isspace (int c); trả về khác 0 nếu c biểu diễn một ký tự khoảng trống
int isupper (int c); trả về khác 0 nếu c biểu diễn một ký tự chữ hoa (A-Z)
int isxdigit (int c); trả về khác 0 nếu c biểu diễn một ký tự số thập lục phân (0-9, A-F hay a-f)
int toascii (int c); chuyển c về mã ASCII tương ứng nếu c biểu diễn một ký tự trong bảng mã ASCII
int tolower (int c); chuyển c thành ký tự thường tương ứng nếu c biểu diễn một ký tự hoa
int toupper (int c); chuyển c thành ký tự hoa tương ứng nếu c biểu diễn một ký tự thường
* Tên gọi chính xác của nó là BitTorrent nhưng thông thường mọi người vẫn gọi tắt và biết đến nó với cái tên Torrent.
* BitTorrent là một mạng lưới P2P (peer to peer = ngang hàng, tức là
nhiều người cùng kết nối trực tiếp với nhau để chia sẻ file). Torrent
chuyên được dùng để trao đổi những dữ liệu như Movie, Games, Software,
Anime,... và một số File có dung lượng lớn hoặc cực lớn. * Do kết nối ngang hàng nên có tốc độ rất cao. Phù hợp cho download các dữ liệu dung lượng lớn
2. P2P - Peer to peer là gì?
* Peer to Peer - mạng ngang hàng p2p được tạo ra bởi hai hay nhiều máy
tính được kết nối với nhau và chia sẻ tài nguyên mà không phải thông
qua một máy chủ dành riêng. Hiện nay có nhiều dạng P2P như: bitorrent,
emule, edonkey,.... * Chúng ta đang sử dụng dạng BitTorrent, thường gọi đơn giản là Torrent
3. Tracker là gì? Client là gì? * Tracker là là một server dùng để ghi nhận các hoạt động của các thành viên bằng các giao thức [Protocol] BitTorrent.
* Client hiểu đơn giản là một phần mềm giúp bạn kết nối tới các
tracker để tiến hành upload/download (Seed/Leech). Có rất nhiều Client
dùng cho download Torrent. * VietTorrent khuyên bạn nên dùng Client UTorrent bản mới nhất luôn được cập nhật tại địa chỉ www.utorrent.com
4. Seed/Seeder - Leech/Leecher là gì? Peer là gì?
* Hiểu đơn giản seed là up, leech là down. Seeder là người upload,
leecher là người download. Sau khi download xong thì leecher trở thành
seeder nếu leecher tiếp tục upload cho những người dến sau * Có thể
hiểu nếu số seeder càng đông thì torrent có tốc độ càng cao. Số leecher
cao cũng có thể làm đẩy nhanh tốc độ vì thực chất các leecher cũng sẽ
vừa down vừa up. * Tổng số leech và seed sẽ = số peer
5. Ratio là gì?
* Hiểu một cách đơn giản thì Ratio được tính bắng công thức: Ratio=dung lượng up/dung lượng down. * Muốn có ratio cao là điều tương đối khó vì bạn cần phải up nhiều hơn down một lượng rất lớn
* VD: Ban đầu bạn up 5Gb/ down 1gb --> ratio~5. Sau đó bạn up thêm
10Gb, down thêm 5Gb, tổng cộng bạn up 15Gb/ down 10Gb --> Ratio~1.5.
Từ ratio~5 giảm xuống ratio~1.5 rất nhanh dù bạn down ít hơn up. Chính
vì vậy nếu muốn ratio cao thì tốt nhất là down ít, up nhiều.
6. Swarm là gì? Scrape là gì?
* Swam là tổng số peer (leech+seed) tham gia chia sẻ 1 file nhất định.
1 swarm càng có nhiều seeder thì down càng nhanh, càng nhiều leecher
thì down càng chậm. Nhưng khi leecher chuyển sang seeder thì tốc độ
down của các leecher còn lại tăng.
* Scrape thực chất là lệnh ping mà các bác network man hay dùng, nếu
nó scrape thành công thì tracker chứa file torrent gốc đang hoạt động
tốt [trừ bảo trì, nâng cấp, error..] và scrape sẽ kiếm được thông tin về
cái file torrent gốc như seed, leech, peer, tracked by, upload date...
7. Hit and Run là gì?
* Khi bạn leech xong, bạn nên giữ seed (ko xóa file torrent trong
client) để tiếp tục up cho người đến sau. Hit and Run là hành động down
xong trốn luôn không thèm seed nữa. * Hit and Run được xem là hành động tồi tệ nhất trong sân chơi P2P.
* Người Hit and Run được xem như "Kẻ cắp P2P" thời IT. Họ chỉ biết há
miệng đợi người khác thả đồ ăn và nhai rồi biến mất trong cõi xương mù u
mê tăm tối, giống như kẻ trộm đồ phải trốn chui trốn lủi khắp thị
thành làng mạc như một kẻ tá túc, hành khất ngoài lề của xã hội. Chẳng
có một lý do gì mà ta lại tự đưa ta vào con đường này vì bản năng, tính
tự ái dân tộc và trách nhiệm bản thân mình mong được chia sẻ cùng anh
em, được anh em coi nhau như một thành viên có trọng trách giống một địa
chỉ, một nơi hội tụ chia sẻ cho nhau những gì mình có, cái ấy mới đáng
quí trọng.
8. DHT là gì?
* DHT có thể
hiểu là một chức năng giúp bạn kết nối tới các máy khác nhanh hơn, tải
dữ liệu từ các máy đó mà ko cần thông qua tracker. Hầu hết các public
tracker đều có chức năng này, VT cũng vậy. Chức năng chỉ có một nhược
điểm duy nhất là dữ liệu up/down phần nào ko thông qua tracker nên
thông tin up/down trên Client (VD: Utorrent) khác với thông tin trên
tracker * DHT (Distributed Hash Table) là một lớp nằm trong hệ thống
mạng p2p nó chứa các giá trị và tên giống như một bảng Hash table
[bảng băm] và sẵn sàng cung cấp các thông tin này cho các User có bật
DHT và tìm kiếm cái Hash table đó, điều này sẽ giúp các User liên kết
với nhau trên khắp thế giới và khi tìm thấy cái file có cái bảng hash
table đó nó sẽ tải về máy mình. * Cũng như các lớp [layer] khác của
hệ thốg p2p, DHT hoạt động chính xác 100% chứ không có chuyện error
khi ghép các mảnh dữ liệu với nhau cho dù nó lấy từ rất nhiều người
[peer] khác nhau. Tham khảo thêm tại đây:
9. Port forwarding là gì?
* Khi chúng ta kết nối vào Internet thì có rất nhiều đường vận chuyển
dữ liệu khác nhau được sử dụng, máy vi tính sẽ âm thầm điều hành một
cách chính xác các công việc vận chuyển đó thông qua rất nhiều port
khác nhau. Các máy tính từ xa (máy vòng quanh thế giới trên internet ấy)
sẽ sử dụng Port forwarding để kết nối với một máy tính khác trong mạng
LAN và đây cũng chính là cách mà các chương trình Torrent sử dụng để
chia sẻ file giữa 2 máy tính với nhau nên ta còn gọi là peer to peer
(PP) sharing đó.
“Thuê bao quý khách tạm thời không liên lạc được, xin quý khách vui
lòng gọi lại sau…” Hai, ba hôm nay cứ 22g là Quang tắt máy cho đến sáng.
Không phải là một chuyện bình thường với một người luôn mở điện thoại
24 / 24. Công việc đòi hỏi Quang phải thường xuyên nghe điện thoại để
nhận các hợp đồng từ khách hàng. Quang cũng không có thói quen tắt máy
kể cả khi ngủ. Và số của Khương luôn được Quang gài bằng tiếng chuông ầm
ĩ nhất. Cô hay trêu đó là tiếng còi báo động tầm xa 10km ( khỏang cách
từ nhà Quang đến nhà Khương) – đủ để đánh thức anh dậy ngay cả lúc 2, 3g
giờ sáng. 6 tháng yêu nhau, điện thoại Quang chưa một lần nằm trong
tình trạng ngoài vùng phủ sóng. Khương quen với việc cứ hở chút hở chút
là nhấc điện thoại lên gọi Quang, quen với việc có thể dễ dàng tìm anh
bất cứ khi nào cần.
Khương chưa bao giờ nghĩ đến chuyện có một ngày anh tắt máy. Ban đầu
cô ngỡ là mình gọi nhầm số. Không! Chắc tại kẹt mạng. Làm gì có! Mọi
người vẫn cứ gọi cho nhau ầm ầm đấy thôi, hôm nay có phải Noel hay giao
thừa đâu? Điện thoại hư? Cũng chẳng phải. Cô đã thử dùng nhiều máy khác
để gọi mà. Rõ ràng là có một chuyện gì đó bất bình thường. Hay đứa ác ôn
trời gầm nào đó đã lấy mất điện thoại của anh. Hay anh đang đi chung
với một ai khác không – phải – em? Hay…anh bị tai nạn? ôi, không? Cô bắt
đầu lo lắng phát sốt lên. Cũng may là cô vẫn còn giữ số của cậu bạn ở
trọ chung nhà với anh. Khương gọi hú hoạ, không ngờ lại phát huy tác
dụng. Cậu ta chuyển máy, cô nghe giọng Quang ngập ngừng bên kia đầu dây:
“Máy anh hết pin!” Okie. Cô chấp nhận lí do đó như cô vẫn hằng tin
tưởng anh.
Nhưng đến khi chuyện này lặp lại liên tục trong một tuần liền thì đó
không còn là việc “máy anh hết pin” nữa rồi. Tự nhiên cô oà khóc như một
đứa trẻ đi lạc tìm hoài không thấy mẹ. Tự nhiên cô nhận ra rằng bấy lâu
nay mình ngủ quên trong sự quan tâm mà anh đem lại. Tự nhiên cô giật
mình vì một nỗi sợ hãi mơ hồ. Chính xác đó là cảm giác bất chợt hiểu ra:
một cái gì đó dẫu đang là của mình vẫn có thể vụt tan biến trong chốc
lát.
Cô tự trấn an mình: “Mày đa cảm quá đấy! Đơn giản là người ta thích
yên tĩnh nên tắt máy thế thôi. Anh đã làm gì sai với mày đâu nào?”.
Không xinh đảo nước nghiêng thành, nhưng nốt ruồi duyên bên khoé môi và
đôi mắt buồn xa xăm vẫn khiến khối chàng trai trong trường cô muốn thay
thế vị trí của anh. Trước giờ chỉ có anh phải nghĩ nên làm gì để giữ cô
chứ chưa bao giờ cô cảm thấy sợ mất anh như thế này.
Thi thoảng có đôi lần cô cảm thấy chán anh. Một con người luôn thích
khám phá, chinh phục những cái mới như Khương luôn không vừa lòng với
những gì mình đang có. Cô không thích bị ràng buộc, cô bực bội với những
câu hỏi quan tâm của Quang mà cô đánh đồng với sự kiểm soát. Khương dị
ứng với những câu đại loại như “Em đang làm gì thế?”, “Em đang đi chung
với cậu bạn nào àh!”. Nhưng ngược lại, cô tự cho mình cái quyền đuợc
nhấc điện thoại lên bất kì lúc nào chỉ để xem Quang đang làm gì, với ai!
Duy nhất một lần Quang đang đi ngoài đường không nghe điện thoại Khương
là y như rằng sau đó anh nhận được một chuỗi những giận hờn trách móc.
Nhưng túm lại, dù thế nào thì cái điện thoại của Quang vẫn hoạt động tốt
trong 6 tháng nay.
Ngày xưa khi Thượng đế tạo ra con người sao lại lỡ tay bỏ hạt giống mâu thuẫn vào trong mỗitâm hồn
làm chi để bây giờ nhiều lúc Khương không biết mình muốn gì ở anh. Quan
tâm đến Khương quá thì Khương đâm cáu kỉnh. Thờ ơ thì Khương lại trách
anh bỏ bê. Mỗi tối đi chơi về, anh đều hôn nhẹ lên má và không quên nói
một câu quen thuộc “Em ngủ ngon nhé!”. Thích à? Vài lần đầu thì có,
nhưng chưa được mấy hôm Khương lại cảm thấy nhàm. Không còn gì lãng mạn
hơn sao! Lại chán. Nhưng anh cứ thử quên xem. Có chuyện ngay. Thế đấy!
Với Khương, tình yêuphải luôn luôn tràn ngập sự mới mẻ và bất ngờ. Kiểu như anh chàng trong
50 first dates ấy. Mỗi ngày phải làm quen lại từ đầu cùng một cô gái
với cả ti tỉ cách chinh phục thú vị khác nhau. Cứ kiểu như mi thì chẳng
bao giờ yêu ai thật sự được đâu Khương ạ, người ta giấu tay ra sau lưng
là mi đã biết hắn chuẩn bị tặng hoa hồng thì còn quái gì là cảm xúc!
Chẳng phải đã có lần Khương chơi trò ấy ư! 1 tin nhắn cho anh vỏn vẹn: “Một sáng ngủ dậy bỗng dưng người ta thấy chán nhau,
anh nhỉ! Đừng liên lạc với em nữa.” Khương tự hỏi mình làm thế để làm
gì? Đùa thôi mà. Để thử xem anh yêu Khương tới mức nào. Và để tìm một
cảm giác mới mẻ cho tình yêu đã mòn mèn cũ kĩ với thời gian. Nói anh
đừng liên lạc nhưng cô cứ thấp thỏm, lâu lâu lại mở máy kiểm tra xem có
tin nhắn của anh không. Có vẻ anh hiểu cái tính khí mưa nắng thất thường
của Khương. Một tin nhắn hồi đáp không nằm ngoài dự tính của Khương.
“Chắc dạo này công việc làm cho em mệt mỏi lắm phải không? Anh không thể
làm gì được cho em, chỉ có thể giúp mỗi chuyện…qua nhà em ăn trái cây
thôi. Mặc dù em tắt máy nhưng anh vẫn thích nhắn tin”.
Đùng một cái, sau hơn nửa năm quen nhau: “Thuê bao quý khách tạm thời
không liên lạc được…”. Lần này người tắt máy là anh. Không phải Khương.
Hàng tá câu hỏi lùng bùng trong đầu cô. Anh đổi số ( chính anh đã vô
tình buột miệng như vậy mà ) nhưng không muốn nói cho cô biết. Để nhắn
tin với một ai khác ( chắc là cái Hải Thy chứ còn ai, anh và nó cứ nhìn
nhau hoài là gì!). Anh đang gặp trục trặc trong công việc ( dạo này nghe
đâu sếp anh đang sát hạch nhân viên ). Anh chán cô rồi ( làm ơn, nếu
thực sự là như thế thì anh nói thẳng một câu có hơn không, như cô đã làm
ấy ). Một cô gái logic như Khương không chấp nhận một chuyện gì đó xảy
đến bất bình thường mà không có nguyên nhân. ít nhất thì “chán” cũng là
một nguyên nhân.
22g30. Khương đứng ngoài ban công nhìn con phố vắng lặng phía dưới.
Tự hỏi tại sao tối nay Quang không tới. Chợt thấy nhớ đến quay quắt cái
hôn nhẹ vào má, thấy cần đến thiết tha câu nói quen thuộc: “Ngủ ngon nhé
em!” Khương bấm số điện thoại Quang liên tục tưởng như trở thành vô
thức, mặc dù biết không nghe được gì ngoài “Thuê bao quý khách vừa gọi
tạm thời không liên lạc được…”
Tít tít. Một số máy lạ hoắc. “Em ra khỏi nhà, mở cửa đi.”
Khương tò mò. Vẫn với thói quen suy đoán trước những gì người khác định làm, Khương tự nhủ ắt hẳn không ai khác ngoài Quang.
Cửa mở. Làm gì có ma nào. Không lẽ mình bị lừa. Chưa kịp tìm đáp án cho thắc mắc thì…
Tít tít. “ Này, anh không đến đâu. Em đừng hí hửng thế chứ?”
Tức thật. Lần đầu tiên Khương bị một người giấu mặt bắt tẩy.
Tít tít. Vẫn số lạ đó. “Giờ thì quẹo trái, đếm 20 bước nhé.”
Tít tít. “Aứh quên. Em có lạnh thì khoác thêm áo vào. Trông em ăn mặc phong phanh thế kia…”
Là sao? Còn biết mình mặc gì nữa cơ à. Được rồi! Em sẽ đợi xem anh định làm gì.
Tít tít. “Tới rồi. Em có thấy chiếc xích lô ngay trước mặt không. Giờ
thì mở tấm ván lên nhé. Điều bất ngờ đang nằm phía dưới đấy!”
Khương dáo dác ngó xung quanh. Không thấy bóng dáng một ai. Cô nhè
nhẹ giở tấm ván lên bằng hai ngón tay. Gì thế này: một phần gà KFC kèm
theo một mảnh giấy được xếp cẩn thận.
“Em ơi,
Chắc em đang đợi anh mở điện thoại để căn vặn anh: “ tại sao anh tắt
máy? Có phải anh đổi số để nhắn tin cho Hải Thy trong công ty phải
không? Anh đang giấu em chuyện gì thế?”…Vân vân và vân vân. Em ngốc quá!
Trước giờ anh chưa làm điều gì để em bị tổn thương, đúng không! Đừng
suy nghĩ lung tung nhé.
Sáng hôm qua đón em, nhìn gương mặt xanh xao và hốc mắt thâm quầng
của em, anh chợt giật mình. Cô bé với đôi má hồng và đôi mắt tinh anh (
lúc nào cũng liếc qua liếc lại ) của anh đâu rồi?! Em bảo tại đêm trước
nói chuyện điện thoại với anh tới 2g sáng nên mới thế. Anh còn tình cờ
phát hiện em đang phải hoàn thành một dự án lớn trong tuần này. Em có
biết mấy hôm nay em ốm đi nhiều lắm không?
Đến đêm thứ hai, thứ ba em vẫn tiếp tục “tám” hết chuyện này đến
chuyện kia với anh tới khuya thì anh bắt đầu lo rồi đấy. Sao dạo này em
lại chuyển thói quen nói chuyện khuya thế nhỉ! Anh sợ em sẽ bệnh mất
thôi. Mà bệnh vì cái lí do “nhiều chuyện với anh mỗi tối” thì vô duyên
quá em nhỉ! Nhưng anh bảo thế nào em cũng có nghe đâu. Anh lo cho em quá
thì em lại chán. Anh mặc kệ em thì em lại nói anh không yêu. Anh chẳng
biết phải làm thế nào cả. Cuối cùng mới nghĩ ra cách tắt điện thoại. Đó
là cách duy nhất khiến cho em có thể đi ngủ sớm để giữ sức khỏe mà hoàn
thành dự án tốt nhất. Lại không làm em chán! Trọn cả đôi đường. Anh
thông minh chứ em nhỉ!
Có thể anh không là người đem lại cho em một tình yêu đầy bất ngờ và
nhiều thú vị như em mong muốn, nhưng anh sẽ luôn là người xuất hiện
những khi em cần anh nhất!”
Tình yêu đích thực
chỉ có thể xây dựng trên niềm tin và sự chân thành. Lần đầu tiên thực
tế và những suy đoán bắt bài người khác của Khương không trùng khớp với
nhau.
Tít tít. “Đừng gọi lại cho số này làm gì. Đây chỉ là số điện thoại
của một người đi đường tốt bụng cho anh mượn để chữa trị virus chán của
cô gái mà anh đang yêu thôi. Ngủ ngon em nhé!”
Có một điều mà đến bây giờ Khương mới hiểu : hóa ra “chán” cũng là
gia vị của tình yêu. Một sáng ngủ dậy tự nhiên thấy yêu anh nhiều hơn,
đủ để Khương với tay lấy điện thọai hí hoáy: “Mặc dù anh tắt máy nhưng
em vẫn thích nhắn tin. Để khi nào mở điện thoại lên anh sẽ thấy em chúc
anh một ngày mới tốt lành…Cám ơn anh đã luôn ở bên cạnh em, ngay cả khi
bỗng dưng ta chán nhau nhất…Để em hiểu rằng: Cái gì là của mình
rồi sẽ vẫn là của mình, nếu em biết nâng niu gìn giữ không phải bằng tay
mà bằng cả trái tim.”
Điều làm nên thành công lớn cho những chiếc
điện thoại ngày nay đó là màn hình cảm ứng. Tuy nhiên, đằng sau những
chiếc màn hình ấy còn có những câu chuyện, thông tin mà ít người biết
đến.
1971: khai sinh màn hình cảm ứng
Người cắm cột mốc đầu tiên
cho sự phát triển của màn hình cảm ứng là tiến sĩ Samuel Hurst. Năm
1971, khi đang là giảng viên tại trường University of Kentucky Research
Foundation (Mỹ), để tiết kiệm thời gian trong việc nhập dữ liệu sinh
viên khi phải duyệt qua rất nhiều tài liệu tốt nghiệp, ông đã thiết kế
kế ra một thiết bị cảm ứng gọi là Elograph (được ghép từ hai chữ
electronic graphics). Sau đó, với phát minh này, công ty Elographics mà
ngày nay là Elo TouchSystems đã ra đời. Tuy Elograph không giống như các
hệ thống cảm biến ngày nay, nhưng nó là bước đi lớn trong việc phát
triển màn hình cảm ứng hiện đại.
Tiến sĩ George Samuel Hurst, cha đẻ của công nghệ cảm ứng.
Năm 1974, tiến sĩ Hurst sáng chế ra màn hình cảm ứng trong suốt đầu
tiên. Tiếp nối những thành công đó, đến năm 1977, công ty Elographics đã
phát minh và được cấp bằng sáng chế về kĩ thuật cảm ứng điện trở 5 dây
(5 wire) mà đến tận bây giờ vẫn còn được ứng dụng rộng rãi.
Màn hình cảm ứng cũng là một lỗ hổng an ninh
Đây
là chủ đề cho một nghiên cứu mà trường đại học Pennsylvania (Mỹ) đã
thực hiện. Nghiên cứu cho thấy dấu vân tay rất dễ bị lưu lại thậm chí là
rất rõ sau quá trình sử dụng. Nếu đem đi phân tích những dấu vết ấy thì
những thông tin mà chúng ta nhập vào chẳng hạn như password hay những
sơ đồ mở khoá (pattern lock) tương tự trên điện thoại Android là hoàn
toàn có thể đọc được.
Nguyên
nhân chính khiến cho dấu vân tay để lại trên màn hình là do chất nhờn
do bàn tay chúng ta tiết ra. Nếu chỉ đơn giản là sử dụng, bỏ túi, cầm
tay mà không vệ sinh, lau chùi thì những vết bám ấy sẽ tồn tại khá lâu
theo thời gian. Vì vậy, nếu đã lưu trữ nhưng thông tin quan trọng, nhạy
cảm trong điện thoại cũng như các thiết bị có sử dụng màn hình cảm ứng
khác thì chúng ta nên chú ý về vấn đề vân tay trong quá trình sử dụng để
tránh những tổn thất đáng tiếc.
Những lí do không nên sử dụng điện thoại cảm ứng
Có
thể việc nói không nên sử dụng màn hình cảm ứng chỉ là nguỵ biện bởi
hiện nay có đến hàng trăm triệu người thậm chí có thể lên đến hàng tỉ
trong tương lai đang sử dụng các loại thiết bị này. Điều này khá dễ hiểu
bởi nhưng tính năng thú vị mà việc dùng màn hình cảm ứng, đặc biệt là
trên điện thoại hay máy tính bảng, đem lại là vô cùng lớn. Các thao tác
chạm, vuốt vẫn khiến người dùng “phát sốt” so với bàn phím vật lý cổ
điển. Tuy nhiên, cũng không thể phủ định rằng cảm ứng là không có nhược
điểm. Sau đây là một số lý do khiến chúng ta có thể phải xa lánh các
thiết bị cảm ứng.
Thứ nhất, việc thao tác trên màn hình cảm ứng
không thể thoái mái như trên bàn phím vật lý được. Thật vậy, chúng ta
hoàn toàn có thể sử dụng một tay đối với bàn phím vật lý mà không sợ che
khuất thông tin trên màn hình như trên màn hình cảm ứng.
Thứ
hai, việc thao tác trên màn hình cảm ứng cho người có vấn đề về thị lực
là rất khó khăn, thậm chí là không thể sử dụng được. Trong khi đó, bàn
phím vật lý sẽ giúp họ định vị được bàn phím cũng như các thao tác của
mình.
Như đã đề cập ở trên, màn hình cảm ứng sẽ để lại rất nhiều
dấu vân tay khiến cho việc bảo mật trở nên kém an toàn hơn. Bên cạnh đó,
vấn đề vi khuẩn, mầm bệnh trên màn hình cảm ứng cũng rất đáng được quan
tâm.
Độ bền của màn hình cảm ứng là lý do tiếp theo. Nếu chúng
ta không sử dụng cẩn thận, điện thoại cảm ứng rất dễ bị vỡ hay nứt màn
hình, điều đó đồng nghĩa chiếc điện thoại sẽ biến thành “gạch” và gần
như vô dụng. Trong khi đó, điện thoại có bàn phím vật lý sẽ chịu được
nhiều va đập hơn, hoặc nếu có sự cố xảy ra với màn hình, chúng ta vẫn có
thể sử dụng điện thoại được nếu đã quen với giao diện người dùng.
Điện
thoại cảm ứng chơi game cũng rất tuyệt nhưng không thể phủ nhận rằng
các trò chơi cần đến nút ảo vẫn thường xuyên khiến người dùng phải “bực
bội”. Trong trường hợp này, bàn phím vật lý vẫn thể hiện thế mạnh của
mình.
Nếu đã là một người cần nhập liệu nhiều trên điện thoại,
bàn phím QWERTY vẫn là lựa chọn số một. Tuy bàn phím ảo không đến nỗi
chậm nhưng lại thường gây tình trạng thiếu, sót hay nhầm chữ cái. Bên
cạnh đó, do thao tác trên một màn hình phẳng nên cảm giác của tay khi
nhập là không có, điều đó sẽ gây khó khăn nếu muốn nhập với tốc độ
nhanh, tay sẽ khó xác định được chính xác vị trí từng nút.
Cuối
cùng, việc sử dụng sẽ tốn năng lượng cũng như lượng nhiệt toả ra sẽ lớn
hơn rất nhiều so với sử dụng bàn phím vật lý. Việc sử dụng một chiếc
smartphone trong 2 đến 3 ngày là một điều rất “xa xỉ”. Trong khi đó, với
cùng lượng pin ấy, một chiếc điện thoại bàn phím vật lý có thể sử dụng
được trong một tuần thậm chí là hơn.
Sử dụng và vệ sinh màn hình cảm ứng đúng cách
Việc
sử dụng màn hình cảm ứng có lẽ đã quá quen thuộc với nhiều người. Hơn
nữa, do đặc tính ít nút vật lý, màn hình lớn nên để hiểu được cách thức
thao tác của các thiết bị cảm ứng rất đơn giản, dễ dàng và ai cũng có
thể làm được. Chỉ có một điều cần lưu ý đó là trong quá trình sử dụng,
chúng ta nên tránh những vật quá cứng nhọn, nơi ẩm ướt hoặc dưới ánh
nắng trực tiếp từ mặt trời.
Do đặc điểm phải tiếp xúc nhiều với
bàn tay người dùng, màn hình cảm ứng là nơi chứa nhiều vi khuẩn, bụi
bẩn, ẩm mốc cho nên việc vệ sinh là điều cần thiết và phải được thực
hiện thường xuyên. Tuy vậy, vệ sinh thế nào cho sạch mà vẫn giữ được
tuổi thọ lâu bền cho chiếc màn hình là điều không phải ai cũng biết.
Chất
liệu tốt nhất để lau chùi cho các thiết bị cảm ứng là sợi bông để tránh
sự trầy xước. Loại khăn thường được sử dụng để lau kính mắt, ống kính
máy ảnh nên có thể dễ dàng tìm thấy ở các cửa hàng. Trong quá trình vệ
sinh phải tắt nguồn cho thiết bị. Khi lau chùi, nên dùng khăn khô, lau
nhẹ nhàng lên màn hình, tránh những thao tác kì cọ quá mạnh.
Trong
trường hợp vết bẩn quá “cứng đầu”, có thể sử dụng nước sạch, nhưng nhất
thiết phải vắt kĩ để nước không chạy vào bo mạch bên trong. Sau khi vệ
sinh, phải đợi màn hình thật khô rồi mới bật nguồn cho thiết bị.
Khi
mua điện thoại mới, người dùng có thói quen dán màn hình để tránh trầy
xước cũng như giữ cho điện thoại được sạch sẽ như mới, nhưng thật ra đây
là việc làm không cần thiết bởi khi chế tạo các nhà sản xuất đã tính
đến khả năng cường lực cho những thiết bị của họ. Những va chạm, cọ quẹt
nhỏ sẽ không thể ảnh hưởng đến chiếc màn hình của chúng ta. Hơn nữa,
thực tế cho thấy không những chẳng sạch được bao nhiêu mà các miếng dán
này còn vô tình làm mất đi vẻ đẹp “rực rỡ” mà các nhà sản xuất luôn cố
gắng đem lại cho từng chiếc màn hình.
Nhờ các phương tiện thông tin đại chúng, giờ đây, hacker được
mọi người biết đến như một cái gì đó đáng ghê tởm. Nhắc đến từ này là
người ta lại nghĩ đến những kẻ hiểm độc, chuyên sử dụng máy tính đi tìm
cách quấy nhiễu, lừa đảo, đánh cắp các thông tin và thậm chí có thể phá
hủy nền kinh tế hay khởi động một cả một cuộc chiến tranh. Không thể phủ
nhận rằng có những con sâu làm rầu nồi canh, nhưng đó chỉ là một phần
rất nhỏ trong cộng đồng hacker.
Thuật ngữ “hacker” lần đầu tiên được sử dụng giữa thập kỉ 60. Hacker,
bản chất là những lập trình viên – những người biết sử dụng các dòng
lệnh máy tính. Họ đã tưởng tượng ra cách sử dụng máy tính mới, tạo ra
các chương trình mà không ai khác có thể hiểu được. Họ là những người
tiên phong trong nền công nghiệp máy tính, họ xây dựng nên mọi thứ, từ
một phần mềm nho nhỏ tới cả một hệ điều hành. Với cách hiểu như thế,
những ông trùm như Bill Gates, Steve Jobs, và Steve Wozniak đều là những
hacker – họ đã thấy trước được những gì máy tính có thể làm được và tạo
ra cách để hiện thực hóa những điều đó.
Các hacker đều có một điểm chung, đó là sự tò mò, hiếu kì mãnh liệt,
đôi khi gần như là sự ám ảnh. Những hacker rất tự hào về các kỹ năng của
mình, nhưng đồng thời họ cũng luôn mày mò, tìm tòi để khám phá ra những
bí ẩn trong các phần mềm và hệ thống. Khi một phần mềm có bug – là một
đoạn mã lỗi ngăn cản phần mềm hoạt động trơn tru – những hacker có thể
tạo ra và phân phối những đoạn mã nhỏ để sửa những lỗi đó – chúng là
những bản vá lỗi, những bản patch. Nhiều hacker coi công việc của họ như
một sự thử thách, nơi họ thể hiện được bản lĩnh và kỹ năng của mình -
họ sẵn sàng làm điều đó mà không cần đến bất kỳ đồng tiền lệ phí nào.
Cùng với sự phát triển của máy tính, những kĩ sư máy tính bắt đầu kết
nối các máy tính riêng lẻ thành một hệ thống. Và không lâu sau, thuật
ngữ “hacker” có một ý nghĩa mới – những người sử dụng máy tính để xâm
nhập vào những mạng máy tính khác. Thông thường, những hacker không có
mục đích xấu. Họ chỉ muốn biết xem mạng máy tính hoạt động như thế nào,
những bức tường lửa kiên cố ra sao, và điều đó thực sự là một thử thách
khó khăn nhưng cũng không kém phần thú vị với họ.
Thời gian trôi qua, nhưng có vẻ như bản chất của những hacker vẫn không
hề thay đổi. Những kẻ chuyên đi phá hoại hệ thống máy tính, xâm nhập
vào các mạng máy tính khác và phát tán virus, phần lớn họ làm điều đó để
thỏa mãn tính tò mò của mình. Họ muốn tìm hiểu từng đến từng ngõ ngách
trong thế giới ảo bao la rộng lớn. Một số sử dụng tài năng và trí tuệ
của mình để giúp đỡ các công ty và chính phủ xây dựng nên những bức
tường an ninh kiên cố hơn. Một số khác sử dụng trong những việc phi đạo
đức.
Trong bài viết này, chúng ta hãy cùng nhau tìm hiểu về những thủ đoạn
hay được các hacker sử dụng, về những loại hacker khác nhau và những phi
vụ làm chấn động thế giới của những tay hacker này.
Đồ nghề của hacker
Ngoài sự khéo léo và nhạy bén, những hacker còn phải dựa vào những dòng
mã lệnh. Trong làng hacker không phải ai cũng biết tự viết ra cho mình
những dòng mã lệnh. Rất nhiều hacker phải dựa vào những dòng mã lệnh do
người khác viết ra. Thêm vào đó, hàng trăm hàng nghìn chương trình hỗ
trợ hack khác nhau có thể dễ dàng được tìm thấy chỉ qua vài giây google.
Những chương trình này đã cung cấp cho các tay hacker một lợi thế vô
cùng lớn - chúng giúp hacker nắm rõ cấu trúc cũng như cách thức hoạt
động của một hệ thống. Và khi đã có những thông tin cần thiết, những tay
hacker có thể dễ dàng xâm nhập và mở tiệc liên hoan trong đó.
Hacker mũ đen thường sử dụng những chương trình sau:
Key logger
Một số chương trình có khả năng ghi lại mọi thao tác trên bàn phím của
bạn. Một khi máy tính nạn nhân đã nhiễm phần mềm này, nó sẽ gửi thông
tin nó thu nhận được tới chủ nhân của mình – các hacker, và từ đó cung
cấp cho hacker những thứ cần thiết để xâm nhập hệ thống hay thậm chí
đánh cắp thông tin cá nhân của bạn.
Hack mật khẩu
Có rất nhiều cách hack mật khẩu, bắt đầu bằng việc thử những từ có sẵn
trong từ điển đến những thuật toán đơn giản để ghép các chữ cái, các số
và các kí tự với nhau. Phép thử này được coi như một cách lấy thịt đè
người - các hacker sẽ thử tất cả mọi tổ hợp có thể, cho đến khi tìm ra
đúng mật khẩu. Một cách khác, sử dụng từ điển, thay vì tự ghép các ký tự
với nhau, những phần mềm này sẽ sử dụng những từ có sẵn trong từ điển
của nó để thử.
Lây nhiễm virus máy tính
Virus máy tính là những phần mềm được viết ra để tự nhân lên và phá vỡ
hệ thống, hoặc tệ hại hơn nữa là thổi bay toàn bộ dữ liệu trong ổ cứng
của bạn. Hacker có thể cài đặt một virus bằng cách xâm nhập thẳng vào hệ
thống, nhưng để đơn giản hơn, các hacker viết ra một con virus, sau đó
gửi cho nạn nhân qua email, tin nhắn nhanh, trang web có chứa mã độc
hoặc qua mạng kết nối peer-to-peer (tạm dịch: mạng ngang hàng).
Thâm nhập từ cửa sau – backdoor
Giống như hack mật khẩu, một số hacker viết chương trình tìm ra những
lỗ hổng bảo mật để xâm nhập vào hệ thống. Trong những ngày đầu khi xuất
hiện Internet, hệ thống bảo mật của máy tính rất lỏng lẻo, điều này giúp
các hacker dễ dàng tìm ra các lỗ hổng và xâm nhập hệ thống mà không cần
đến username và password. Cách khác, hacker có thể xâm nhập backdoor
bằng cách sử dụng Trojan - 1 thứ công cụ lợi hại, với tên gọi xuất phát
từ điển tích nổi tiếng "Con ngựa thành Troia" trong thần thoại Hy Lạp.
Trojan sẽ tự cải trang mình thành 1 phần mềm tỏ-ra-hữu-ích, nhưng thực
tế, nó sẽ giúp hacker điều khiển máy tính của nạn nhân từ xa, thông qua
hệ thống mạng.
Tạo ra các máy tính ma
Một máy tính ma – hay còn gọi là bot – là một máy tính mà hacker sử
dụng để spam hoặc thực hiện các cuộc tấn công từ chối dịch vụ (DDoS).
Sau khi nạn nhân vô tình kích hoạt những đoạn mã tưởng chừng như vô hại,
một kết nối được mở ra giữa máy tính của nạn nhân và của hacker, từ đó
hacker có thể âm thầm điều khiển máy tính nạn nhân, sử dụng chúng với
mục đích xấu hoặc tiếp tục spam.
Xâm nhập vào email
Hacker sẽ tạo ra những đoạn mã có khả năng chặn và đọc trộm các email
cũng như nghe trộm các cuộc điện thoại. Tuy nhiên, hiện nay hầu hết các
chương trình email đều sử dụng các cách mã hóa rất phức tạp khiến cho
các hacker dù có chặn được đường truyền nhưng cũng không thể đọc trộm
được.
Trong phần sau, chúng ta hãy cùng điểm qua vài nét về văn hóa của những hacker.
Văn hóa của hacker
Hacker thường là những cá thể đơn độc, sống tách rời xã hội. Niềm đam
mê mãnh liệt với chiếc máy vi tính và việc lập trình có thể tạo nên bức
tường ngăn cách các hacker với những người xung quanh. Họ có thể ngồi
hàng giờ bên chiếc máy vi tính và quên đi mọi thứ.
Mạng máy tính giúp các hacker làm quen với những người khác có cùng sở
thích. Trước khi internet trở nên phổ biến, hacker phải cài đặt và truy
cập vào Bulletin Board Systems (BBS) – nôm na là một hệ thống bảng thông
báo. Một hacker phải tạo một BBS trên máy tính của họ và những người
khác sẽ truy cập vào hệ thống đó để gửi tin nhắn, chia sẻ thông tin,
chơi games hay tải các chương trình. Nếu các hacker tìm thấy nhau, thông
tin trao đổi sẽ tăng đột biến.
Một số hacker thường post thành quả của mình lên BBS, tự sướng về việc
vượt qua được những bức tường bảo mật kiên cố nhất. Thông thường họ sẽ
tải lên một file nào đó trên máy của nạn nhân để chứng minh cho thành
quả của mình. Đầu thập kỉ 90, luật pháp đã bắt đầu để ý đến sự đe dọa an
ninh nghiêm trọng của các hacker. Trong quãng thời gian này, có vẻ như
ngay cả những bức tường lửa kiên cố nhất cũng chỉ là trò trẻ con đối với
những tay hacker chuyên nghiệp.
Hiện nay trên Internet có rất nhiều trang web nói về hack. Tờ báo
“2600: The Hacker Quarterly” có trang web riêng của mình, trong đó mọi
người chủ yếu thảo luận về hack. Nếu không có thời gian lướt web bạn vẫn
có thể mua báo giấy của họ nếu muốn. Những trang web khác như
Hacker.org đẩy mạnh việc tìm hiểu và học tập các kỹ thuật hack, ngoài ra
còn có cả những câu đố và những cuộc tranh tài cho các hacker để kiểm
tra các kỹ năng của mình.
Khi bị bắt, hầu hết các hacker đều thừa nhận rằng, hành vi của mình có
thể gây nên những hậu quả tai hại. Bản thân họ không hề muốn gây chuyện;
ngược lại, họ tấn công vào các hệ thống chỉ để thỏa mãn trí tò mò của
mình. Xâm nhập vào một hệ thống được bảo mật tốt không khác gì leo lên
đỉnh Everest, đó là những thách thức thực sự. Ở Mỹ, các hacker có thể bị
sờ gáy dù họ mới chỉ dừng lại ở mức truy cập vào một hệ thống khác.
Nhưng không phải tất cả các hacker đều có hứng thú với việc này. Một số
sử dụng tài năng và hiểu biết của mình để tạo ra những chương trình bảo
mật tốt hơn. Trong thực tế, khi đã xâm nhập được vào một hệ thống thì
nhiều hacker có thể viết một chương trình giúp tăng tính bảo mật cho hệ
thống đó. Nói một cách khác, Internet là một cuộc chiến đấu giữa 2 nhóm –
một bên là những hacker mũ đen, luôn lăm le xâm nhập trái phép và phát
tán virus; và một bên là những hacker mũ trắng, luôn tìm cách nâng cao
khả năng bảo mật và tạo ra những chương trình diệt virus hiệu quả.
Dù ở bên nào, các hacker luôn được hỗ trợ bởi những phần mềm mã nguồn
mở - đúng như tên gọi của nó, mọi người đều có thể có mã nguồn của phần
mềm, có thể sao chép, thay đổi,... và học hỏi kinh nghiệm của người
khác; từ đó có thể hoàn thiện thêm sản phẩm của mình, từ những chương
trình tí hon cho tới cả một hệ điều hành như Linux.
Hàng năm người ta tổ chức rất nhiều sự kiện để nói về hacker, thường
mang mục đích tốt. Một hội nghị thường niên tại Las Vegas có tên là
DEFCON thu hút hàng nghìn người tham gia, qua đó người ta có thể trao
đổi, thi tài hay tham gia vào các cuộc tranh luận về hack cũng như sự
phát triển của công nghệ thông tin... tất cả nhằm thỏa mãn sự tò mò hiếu
kì của bản thân. Một sự kiện tương tự có tên là Chaos Communication
Camp mà ở đó, người ta ở trong những túp lều thô sơ và thảo luận về
những thứ liên quan tới công nghệ hiện đại.
Trong phần sau, chúng ta hãy tìm hiểu thêm về hacker và vấn đề pháp lý liên quan.
Hacker và Luật pháp
Hacker thực sự là một nỗi khiếp sợ đối với những nhà cầm quyền. Họ có
khả năng xâm nhập một hệ thống mà không để lại dấu vết gì, ăn cắp các
thông tin nhạy cảm mà một khi phát tán ra, đó có thể là cơn ác mộng cho
cả hệ thống chính quyền. Bởi vậy, chính phủ sẽ không mất thời gian để
tìm hiểu xem bạn chỉ là một tay hacker rỗi hơi hoàn toàn vô hại, hay một
tên gián điệp thực thụ.
Luật pháp đã phản ánh rõ điều này. Tại Mỹ, có rất nhiều điều luật được
đặt ra để ngăn cấm hack. Ví dụ như 18 U.S.C $1029, tập trung vào việc
tạo ra và phát tán những đoạn mã hay các thiết bị hỗ trợ cho việc truy
cập trái phép vào máy tính khác. Tuy nhiên pháp luật chỉ đề cập về việc
chế tạo và sử dụng những thiết bị này vào mục đích phi pháp, nên khi bị
bắt, hacker có thể phản pháo rằng anh ta chỉ sử dụng thiết bị này vào
mục đích kiểm tra độ an toàn của hệ thống.
Một luật quan trọng khác là 18 U.S.C $1030, trong đó có nhắc đến việc
truy cập vào máy tính của chính phủ. Dù bạn xâm nhập vào hệ thống đó với
bất kể với mục đích gì, bạn đã chắc chắn có một suất trong trại giam vì
tội truy cập trái phép hệ thống bảo mật của chính phủ.
Có nhiều mức án phạt khác nhau, từ phạt tiền cho đến ngồi tù. Trẻ vị
thành niên có thể bị quản thúc tại nhà ít nhất là 6 tháng, với những đối
tượng khác, hình phạt có thể lên tới 20 năm. Sở Tư pháp đã nghĩ ra cách
tính liên hệ giữa thiệt hại về tài chính, số lượng nạn nhân với thời
gian phạt để có một hình phạt xác đáng.
Một số nước khác có các luật tương tự, nhưng ở nhiều nơi, luật pháp tỏ
ra khá mơ hồ. Ví dụ như ở Đức, gần đây người ta ra luật “cấm sở hữu các
công cụ của hacker”. Nhiều ý kiến chỉ trích cho rằng luật này quá rộng,
nhiều ứng dụng hợp pháp có thể bị coi là công cụ hỗ trợ hacker. Một số
chỉ ra rằng, một công ty có thể phạm luật khi thuê một hacker để kiểm
tra lỗ hổng an ninh trong hệ thống của mình.
Hacker có thể ngồi ở một nơi nào đó và tấn công vào hệ thống ở những
quốc gia cách xa hắn nửa vòng trái đất. Vậy nên việc truy tố những thủ
phạm của cuộc tấn công trở nên rất phức tạp. Một số nước có kiến nghị về
việc trao trả nghi phạm để xử phạt, và quá trình này mất rất nhiều thời
gian. Đơn cử như một trường hợp cực kì nổi tiếng ở Mỹ, đó là bản cáo
trạng của hacker người Anh có tên Gary McKinnon. Từ năm 2002, McKinnon
bị yêu cầu phải đưa sang Mỹ để xét xử việc xâm nhập trái phép vào hệ
thống máy tính của Bộ Quốc phòng và của NASA. McKinnon, người thực hiện
những cuộc tấn công từ Anh quốc, đã kháng án bằng cách tuyên bố rằng anh
ta chỉ đơn thuần phát hiện và chỉ ra những sai sót trong hệ thống bảo
mật. Tháng 4 năm 2007, tòa án Anh đã bác bỏ đơn kháng án của anh ta.
Trong phần sau, chúng ta hãy cùng nhau điểm qua gương mặt của một số hacker nổi tiếng.
Những hacker đình đám trong giới công nghệ
Steve Jobs và Steve Wozniak – 2 người sáng lập nên Apple – đều là những
hacker. Ban đầu, họ hoạt động giống như những hacker mũ đen, nhưng sau
đó họ đã thay đổi ý nghĩ và tập trung vào việc tạo ra các phần cứng và
phần mềm máy tính. Nỗ lực của 2 người đã giúp mở ra một kỉ nguyên mới –
kỉ nguyên của máy tính cá nhân, khi mà trước đó, những hệ thống máy tính
chỉ dành cho các công ty lớn, chúng quá đắt đối với người dùng thông
thường.
Linus Torvalds, người sáng lập Linux, cũng là một hacker nổi tiếng. Hệ
điều hành mã nguồn mở của ông trở nên rất phổ biến trong giới công nghệ.
Ông đã góp phần tạo nên những khái niệm về phần mềm mã nguồn mở, và cho
chúng ta thấy rằng, khi chia sẻ thông tin với người khác, chúng ta có
thể gặt hái những lợi ích không tưởng.
Richard Stallman, được biết đến với cái tên “rms”, người sáng lập ra dự
án GNU – một hệ điều hành miễn phí. Ông là người ủng hộ cho phần mềm
miễn phí và những quyền truy cập hợp pháp. Ông làm việc cho các tổ chức
như Free Software Foundation và phản đối các chính sách như Digital
Right Management – Quản lý bản quyền kĩ thuật số.
Và cũng như thế, trong thế giới hacker mũ đen cũng có rất nhiều người
có tên tuổi. Ở tuổi 16, Jonathan James đã trở thành hacker đầu tiên bị
bắt giam, sau khi đã thừa nhận việc xâm phạm trái phép trên rất nhiều hệ
thống, bao gồm cả NASA và máy chủ của Cơ quan giảm thiểu đe dọa Quốc
phòng. Trên thế giới trực tuyến, Jonathan sử dụng nickname “c0mrade”.
Ban đầu bị kết án quản thúc tại gia, nhưng sau đó James đã bị tống vào
trại giam vì tiếp tục có những hành vi khiêu khích giới chức trách.
Kevin Mitnick trở nên nổi tiếng vào những năm 80 sau khi ông bị buộc
tội đã đột nhập vào hệ thống của Tổng tư lệnh phòng không không quân Bắc
Mỹ (NORAD) khi mới 17 tuổi. Mitnick trở nên nổi như cồn với những câu
chuyện được kể lại về những chiến tích của mình, và cả tin đồn rằng cái
tên Mitnick đã xuất hiện trong danh sách truy nã của FBI. Thực tế,
Mitnick đã bị bắt nhiều lần vì tội danh xâm nhập trái phép hệ thống bảo
vệ để truy cập vào mọi phần mềm máy tính.
Kevin Poulsen, hay Dark Dante, nổi tiếng trong lĩnh vực tấn công vào hệ
thống điện thoại. Ông đã xâm nhập vào hệ thống radio có tên KIIS-FM,
qua đó chỉ cho phép những cuộc gọi bắt nguồn từ nhà ông ta đến trạm
radio trung tâm, từ đó giúp ông giành được rất nhiều giải thưởng trong
những cuộc cuộc thi qua radio. Sau vụ đình đám này, ông đã cải tà quy
chính, và bây giờ hiện ông đang là biên tập viên chính của báo Wired.
Được biết đến với biệt danh “homeless hacker”, Adrian Lamo sử dụng máy
tính của thư viện hay máy tính tại quán cafe để thực hiện việc tấn công
của mình. Anh khai thác các lỗ hổng bảo mật, qua đó xâm nhập vào hệ
thống và để lại một tin nhắn thông báo về lỗ hổng đó. Không may cho
Lamo, mục đích thì có vẻ tốt nhưng những hành động đó là những hành động
phạm pháp. Anh cũng hay đi rình mò, đọc trộm các thông tin nhạy cảm và
truy cập vào các tài liệu bí mật. Anh đã bị bắt sau khi đột nhập vào hệ
thống máy tính của tờ New York Times.
Đó chỉ là một phần rất rất nhỏ trong thế giới Hacker. Còn rất nhiều
những tên tuổi vô danh khác, nhưng chúng ta không thể biết được con số
cụ thể. Nhiều người không định hình được việc mình đang làm – họ sử dụng
những công cụ mà họ không thực sự hiểu chúng. Một số khác, biết rõ
những gì mình đang làm, và họ có thể xâm nhập vào một hệ thống mà không
để lại dấu vết gì.
Những điều có thể bạn chưa biết về hacker
Super Phreak
Trước thời của hacker máy tính, đã có một số cá nhân hiếu động và thông
minh, đã tìm cách vận hành hệ thống điện thoại theo cách có tên là
“phreaking”. Thông qua phreaking, họ có thể gọi điện đường dài mà không
phải trả phí hay đôi khi chơi khăm những người sử dụng điện thoại khác.
Cuộc sống của các hacker
Những hacker tuân theo luật pháp có thể có một cuộc sống êm thấm. Rất
nhiều công ty bỏ tiền ra thuê các hacker để kiểm tra mức độ bảo mật của
hệ thống. Một số hacker có thể làm giàu bằng cách viết những chương
trình và ứng dụng hữu ích, ví dụ như 2 sinh viên của Đại học Stanford –
Larry Page và Sergey Brin. Page và Brin đã cùng nhau tạo nên một công cụ
tìm kiếm tuyệt vời mang tên Google Nhờ có nó, hiện nay họ đang được xếp
hạng 26 trong top những tỷ phú giàu có nhất thế giới.
Nếu
như vài năm trước đây chúng ta không có nhiều điều để nói về RAM bởi đa
số các hệ thống đều được trang bị SDRAM với tốc độ từ 66MHz tới 133MHz
thì trong khoảng thời gian ngắn trở lại đây, đã xuất hiện khá nhiều
chủng loại bộ nhớ mới như DDR SDRAM, Rambus RDRAM, DDR-II SDRAM... khiến
người dùng 'hoa cả mắt' khi chọn lựa.
Trong những năm
qua, người dùng đã chứng kiến sự thay đổi nhanh ***ng của hệ thống máy
tính để bàn. Hai dòng CPU chính của Intel và AMD thay đổi liên tục không
chỉ về tốc độ (từ vài trăm MHz lên tới hàng GHz) mà còn cả giao tiếp
(Intel: Socket 370/ 423/ 478 /775, AMD: Slot A, Socket 462-A/ 754 /940/
939...) và dĩ nhiên chúng kéo theo sự thay đổi của bo mạch chủ và nhiều
thành phần khác. Một trong những thành phần chịu ảnh hưởng lớn nhất là
bộ nhớ hệ thống (RAM). Bài viết này sẽ giúp các bạn hiểu rõ hơn về những
khái niệm của bộ nhớ RAM máy tính kèm theo một số thông tin bổ ích
khác. Tuy nhiên chúng ta sẽ tập trung vào bộ nhớ DDR và DDR2 vì hiện
tại, chúng là loại thống trị trên thị trường. SDRAM đã quá cũ còn RDRAM
thì giá quá cao mà chỉ được dùng trong một số máy tính Pentium 4 đời
đầu.
1. KHÁI NIÊM CƠ BẢN VỀ RAM
- Tên gọi
Hiện
nay nhiều người thường nhầm lẫn về cách gọi tên của các loại RAM. Nếu
như RDRAM không có gì để nói thì với dòng SDRAM, việc nhầm lẫn ngày càng
lớn. Khái niệm RAM (Random Access Memory) thì chắc hẳn ai cũng biết.
DRAM hay SDRAM là khái niệm mở rộng hơn (Synchronous Dynamic Random
Access Memory - RAM đồng bộ). Ban đầu và thậm chí hiện nay khi nói đến
SDRAM người ta thường nghĩ ngay đến RAM loại cũ với tốc độ 100MHz hay
133MHz; tuy nhiên từ sau khi DDR SDRAM (Double Data Rate SDRAM) ra đời
thì quan niệm này hoàn toàn sai. Tham khảo một vài bảng báo giá linh
kiện, bạn sẽ thấy các công ty đã góp phần không nhỏ vào việc khiến người
dùng hiểu sai vấn đề. SDRAM là tên gọi chung của một dòng bộ nhớ máy
tính, nó được phân ra SDR (Single Data Rate) và DDR (Double Data Rate).
Do đó nếu gọi một cách chính xác, chúng ta sẽ có hai loại RAM chính là
SDR SDRAM và DDR SDRAM. Cấu trúc của hai loại RAM này tương đối giống
nhau, nhưng DDR có khả năng truyền dữ liệu ở cả hai điểm lên và xuống
của tín hiệu nên tốc độ nhanh gấp đôi. Trong thời gian gần đây xuất hiện
chuẩn RAM mới dựa trên nền tảng DDR là DDR-II, DDR-III có tốc độ cao
hơn nhờ cải tiến thiết kế.
- Tốc độ (Speed)
Đây
có lẽ là khái niệm được người dùng quan tâm nhất, tuy nhiên có người
thắc mắc về cách gọi tên, đối với DDR thì có hai cách gọi theo tốc độ
MHz hoặc theo băng thông. Ví dụ, khi nói DDR333 tức là thanh RAM đó mặc
định hoạt động ở tốc độ 333MHz nhưng cách gọi PC2700 thì lại nói về băng
thông RAM, tức là khi chạy ở tốc độ 333MHz thì nó sẽ đạt băng thông là
2700MB/s (trên lý thuyết). Thường ở Việt Nam thông dụng các loại RAM có
bus 333 và 400, những loại có bus cao hơn thường xuất hiện ở những loại
cao cấp như Kingston HyperX, Corsair , Mushkin LV nhưng nói chung khá
hiếm.
- Độ trễ (Latency)
CAS Latency là
khái niệm mà người dùng thắc mắc nhiều nhất. Trước đây, khi đi mua RAM,
người mua thường chỉ quan tâm tới tốc độ hoạt động như 100MHz hay 133MHz
nhưng gần đây, khái niệm CAS đang dần được người dùng để ý bởi nó đóng
vai trò khá quan trọng vào tốc độ xử lý tổng thể của hệ thống; đặc biệt
trong ép xung. Vậy CAS là gì? CAS là viết tắt của 'Column Address
Strobe' (địa chỉ cột). Một thanh DRAM được coi như một ma trận của các ô
nhớ (bạn có thể hình dung như một bảng tính excel với nhiều ô trống) và
dĩ nhiên mỗi ô nhớ sẽ có toạ độ (ngang, dọc). Như vậy bạn có thể đoán
ngay ra khái niệm RAS (Row Adress Strobe) là địa chỉ hàng nhưng do
nguyên lý hoạt động của DRAM là truyền dữ liệu xuống chân nên RAS thường
không quan trọng bằng CAS.
Khái niệm độ trễ biểu thị
quãng thời gian bạn phải chờ trước khi nhận được thứ mình cần. Theo từ
điển Merriam-Webster thì latency có nghĩa là 'khoảng thời gian từ khi ra
lệnh đến khi nhận được sự phản hồi'. Vậy CAS sẽ làm việc như thế nào?
CAS Latency có ý nghĩa gì? Để hiểu khái niệm này, chúng ta sẽ cùng điểm
nhanh qua cách thức bộ nhớ làm việc, đầu tiên chipset sẽ truy cập vào
hàng ngang (ROW) của ma trận bộ nhớ thông qua việc đưa địa chỉ vào chân
nhớ (chân RAM) rồi kích hoạt tín hiệu RAS. Chúng ta sẽ phải chờ khoảng
vài xung nhịp hệ thống (RAS to CAS Delay) trước khi địa chỉ cột được đặt
vào chân nhớ và tín hiệu CAS phát ra. Sau khi tín hiệu CAS phát đi,
chúng ta tiếp tục phải chờ một khoảng thời gian nữa (đây chính là CAS
Latency) thì dữ liệu sẽ được tìm thấy. Điều đó cũng có nghĩa là với CAS
2, chipset phải chờ 2 xung nhịp trước khi lấy được dữ liệu và với CAS3,
thời gian chờ sẽ là 3 xung nhịp hệ thống.
Bạn sẽ thắc
mắc như vậy phải chăng CAS2 nhanh hơn CAS3 tới 33%, không đến mức như
vậy bởi có rất nhiều yếu tố ảnh hưởng đến hiệu năng tổng thể của bộ nhớ
điển hình như:
+ Chuỗi xử lý thông tin: kích hoạt RAS, chờ khoảng thời gian trễ RAS-to-CAS Delay và CAS Latency.
+
Truy cập bộ nhớ theo chuỗi: đôi khi chipset sẽ đọc dữ liệu trong bộ nhớ
RAM theo chuỗi (burst) như vậy rất nhiều dữ liệu sẽ được chuyển đi một
lần và tín hiệu CAS chỉ được kích hoạt một lần ở đầu chuỗi.
+
Bộ vi xử lý có bộ đệm khá lớn nên chứa nhiều lệnh truy cập và dữ liệu;
do đó thông tin được tìm kiếm trên bộ đệm trước khi truy cập vào RAM và
tần số dữ liệu cần được tìm thấy trên bộ đệm (hit-rate) khá cao (vào
khoảng 95%).
Bảng gọi tên ứng theo:
Băng thông - Tốc độ MHz
PC1600 DDR 200
PC 2100 DDR 266
PC 2700 DDR 333
PC 3000 DDR 366
PC 3200 DDR 400
PC 3500 DDR 466
PC 4000 DDR 500
PC 4200 DDR 533
PC 4400 DDR 550
PC 4800 DDR 600
Nói
tóm lại việc chuyển từ CAS 3 sang CAS 2 sẽ tăng hiệu năng xử lý cho tất
cả các ứng dụng. Những chương trình phụ thuộc vào bộ nhớ như game hay
ứng dụng đồ họa sẽ chạy nhanh hơn. Điều này đồng nghĩa với việc những
thanh RAM được đóng dấu CAS2 chắc chắn chạy nhanh hơn những thanh RAM
CAS3. Nếu bạn dự định mua đồ chơi cho một cuộc đua ép xung hay đơn giản
chỉ cần hệ thống đạt tốc độ tối ưu, hãy chọn RAM CAS2 nhưng nếu chỉ là
công việc văn phòng, CAS 3 hoàn toàn vẫn đáp ứng yêu cầu.
- Tần số làm tươi
Thường
thì khi nhắc tới khái niệm tần số làm tươi (RAM Refresh Rate), người ta
thường nghĩ ngay đến màn hình máy tính, tuy nhiên bộ nhớ DRAM (Dynamic
Random Access Memory) cũng có khái niệm này. Như bạn đã biết module DRAM
được tạo nên bởi nhiều tế bào điện tử, mỗi tế bào này phải được nạp lại
điện hàng nghìn lần mỗi giây vì nếu không dữ liệu chứa trong chúng sẽ
bị mất. Một số loại DRAM có khả năng tự làm tươi dữ liệu độc lập với bộ
xử lý thường được sử dụng trong những thiết bị di động để tiết kiệm điện
năng.
- SDRAM Access Time
Việc cho ra đời
cách đọc dữ liệu theo từng chuỗi (Burst Mode) đã giúp khắc phục nhiều
nhược điểm và tăng hiệu năng cho RAM, chu kì của chuỗi ngắn hơn rất
nhiều chu kì trang của RAM loại cũ. Chu kì của chuỗi cũng được coi như
là chu kì xung nhịp của SDRAM và chính vì thế nó được coi như thang xác
định cho tốc độ của RAM bởi đó là khoảng thời gian cần thiết giữa các
lần truy xuất dữ liệu theo chuỗi của RAM. Những con số -12, -10, -8...
ghi trên các chip RAM cho biết khoảng thời gian tối thiểu giữa mỗi lần
truy xuất dữ liệu: nhãn -12 xác định chu kì truy cập dữ liệu của RAM là
12ns (nano-giây) đồng nghĩa với việc tốc độ hoạt động tối đa của RAM sẽ
là 83MHz. Thường RAM có tốc độ cao sẽ sử dụng chip RAM có chu kì truy
xuất thấp nhưng với chu kì truy xuất thấp chưa chắc RAM đã có thể hoạt
động ở tốc độ cao do còn phụ thuộc vào nhiều yếu tố khác. Do đó đôi khi
bạn sẽ gặp trường hợp thanh RAM có tốc độ thấp nhưng khi đem vào 'thử
lửa' ép xung thì lên được tốc độ cao hơn nhiều so với những loại RAM mặc
định dán nhãn tốc độ cao.
NHỮNG MÓN ĐỒ CHƠI KHÔNG THỂ THIẾU
Bạn
có thể nhận thấy một điều rất rõ ràng đó là tốc độ của RAM và điện thế
sử dụng ngày càng cao hơn. Ban đầu chúng ta có DDR200/2,5v thì giờ đây
chúng ta đã có DDR500/2,8v (thậm chí là 2,85v đối với một số loại nhất
định) hay DDR2-667/1,8v. Hai yếu tố này đã góp phần làm cho nhiệt độ của
RAM ngày càng tăng, đó cũng chính là lý do tại sao các loại RAM cao cấp
thường có lá thép ốp ở mặt ngoài; ngoài lý do bảo vệ thì nó còn góp
phần tản nhiệt. Tuy nhiên nếu bạn mua được RAM loại thường nhưng có tốc
độ tốt và khả năng ép xung cao, bạn có thể tham khảo những giải pháp tản
nhiệt dành riêng cho RAM của những nhà sản xuất thứ ba như tản nhiệt
cho RAM của CoolerMaster.
Nếu cảm thấy khả năng tài chính
có giới hạn, bạn có thể tự chế những mẩu tản nhiệt với một cục tản
nhiệt lớn của CPU và một chiếc cưa sắt. Nếu khéo tay, bạn sẽ có những
sản phẩm đẹp mắt không thua gì hàng hiệu. Một số nhà sản xuất lại chọn
giải pháp đơn giản hơn bằng cách làm những tấm giải nhiệt giống của hàng
hiệu với chất liệu như hợp kim dẫn nhiệt hay đồng đỏ nhưng thực tế
chúng không hiệu quả cho lắm.
Một món đồ chơi nữa cũng
đang được dân overclock ưa chuộng hiện nay là DDR Booster của OCZ tuy
nhiên nó khá nguy hiểm và bạn chỉ nên dùng nếu có kinh nghiệm về máy
tính. DDR Booster không phải là một thanh RAM mặc dù khi mới nhìn thì có
vẻ hơi giống. Tuy nhiên nó lại rất gần gũi với RAM nhờ khả năng can
thiệp vào hệ thống cấp điện cho RAM, chính vì thế với DDR Booster, bạn
có thể chỉnh được điện năng tiêu thụ cho RAM một cách chính xác nhờ đồng
hồ đo đi kèm.
Việc sử dụng rất đơn giản, bạn chỉ việc
cắm vào khe RAM trống rồi vặn chiết áp trong khi theo dõi đồng hồ sao
cho hợp lý vì nếu nhiệt độ lên quá cao, RAM có thể bị cháy. Có thể DDR
Booster khá đáng sợ nhưng hiệu quả nó mang lại thì không ai có thể chê
được. Trước kia bạn cần đến mỏ hàn và trình độ điện tử vào loại có hạng
nếu muốn chỉnh lại điện của RAM bằng tay thì với DDR Booster, việc cần
làm chỉ đơn giản là cắm và vặn. Bạn có thể hình dung những thanh RAM rất
thường bình thường bán đầy ngoài cửa hàng có thể chạy ở tốc độ gần gấp
đôi hoặc chí ít cũng ngang với các loại RAM xịn hay không? Câu trả lời
là có, dĩ nhiên là với DDR Booster và những giải pháp tản nhiệt hợp lý.
2. CHỌN ĐÚNG LOẠI RAM
Khi
mua hay ráp máy tính, việc chọn đúng loại RAM là khá quan trọng nhưng
lại ít người để ý. Mỗi hệ thống sử dụng CPU Intel hay AMD lại 'thích'
một kiểu RAM khác nhau, ngoài ra việc chọn lựa RAM còn phụ thuộc vào
chipset và nhu cầu làm việc của người dùng. Thông thường CPU Intel
Pentium 4 và Athlon 64 yêu cầu RAM tốc độ cao (bus 400MHz) trở lên do
FSB của CPU khá lớn cho phép băng thông dữ liệu rộng. Nếu như RAM không
đáp ứng được mức băng thông đó thì sẽ bị hiện tượng 'nghẽn cổ chai'
(bottle-neck), ứng dụng sẽ hoạt động rất chậm. Nếu không xét đến việc ép
xung (overclock), thông thường khi mua RAM cho máy tính, bạn hãy mua
như sau:
DDR SDRAM
Như đã nói ở trên, đây
đang là loại RAM thông dụng và thịnh hành nhất cho toàn bộ các loại máy
tính để bàn vào thời điểm bạn đọc bài viết này. (ko rõ bài viết lúc
nào).
A. Đối với CPU Intel
+ Intel Pentium
4-C/E/G/J Front Side Bus (FSB) 800MHz: Những loại CPU này có FSB rất
lớn nên nếu sử dụng trên nền bo mạch chủ 865/875 hay 915/925 mới nhất,
bạn sẽ đạt tốc độ cao khi lắp đặt bộ nhớ kênh đôi (Dual Channel DDR)
đúng cách. Về nguyên tắc Dual Channel DDR khá giống với chế độ RAID của
đĩa cứng, với 100MB dữ liệu chuyển vào RAM, thay vì vào một thanh RAM đủ
100MB, chipset sẽ chuyển đồng thời vào mỗi thanh RAM 50MB nên sẽ rút
ngắn thời gian làm việc xuống chỉ còn một nửa. Và như vậy hai thanh RAM
DDR bus 400 sẽ cho băng thông lý thuyết lên mức 800MHz, tương xứng với
bus của CPU. Điều đó cho thấy nếu bạn sử dụng CPU có bus 800 thì việc
mua hai thanh RAM DDR bus 400 giống nhau là lựa chọn lý tưởng. Chú ý hai
thanh RAM phải giống nhau cả về tốc độ và loại chip nhớ sử dụng, đặc
biệt là khi bạn chạy trên nền chipset i875P bởi chipset này khá 'khó
tính', nếu không giống nhau thì rất có thể tính năng PAT sẽ không được
kích hoạt và làm giảm hiệu năng hệ thống.
+ Intel
Celeron/Pentium4 bus 400MHz/533MHz: Mặc dù những loại CPU có bus khá cao
nhưng do thuộc thế hệ cũ hoặc dòng rẻ tiền nên chúng thường được lắp
chung với các loại chipset 845, cho đến chipset 845PE thì tốc độ RAM cao
nhất được chính thức hỗ trợ chỉ là 333MHz. Do đó nếu bạn lắp RAM DDR400
thì sẽ không kinh tế. Như vậy trừ khi bạn dùng bo mạch chủ có chipset
845PE, còn nếu không bạn nên chọn các loại RAM có bus 266MHz và để dành
khoản tài chính dư ra cho một lần nâng cấp tổng thể hệ thống sau này.
CÁC BƯỚC NÂNG CẤP BỘ NHỚ
Khi
nhận thấy máy tính chạy chậm chạp, có thể bạn nghĩ ngay tới việc nâng
cấp card màn hình, bộ xử lý hay bo mạch chủ (mainboard). Nhưng bạn có
biết rằng trong nhiều tình huống, nâng cấp bộ nhớ RAM giúp tăng đáng kể
hiệu năng máy tính mà chi phí lại rẻ?
XÁC ĐỊNH DUNG LƯỢNG
Dung
lượng bộ nhớ phụ thuộc vào hệ điều hành và ứng dụng. Windows XP yêu cầu
bộ nhớ RAM tối thiểu 64MB nhưng khuyến khích 128MB. Windows Me yêu cầu
tối thiểu 32MB, trong khi Windows 98 chỉ cần 16MB. Nếu cài thêm bộ
Office XP trên hệ điều hành Windows XP, bạn cần tối thiểu 128MB RAM. Để
chạy cùng lúc các ứng dụng như Word, Excel và Power Point, bạn cần tối
thiểu 152MB. Nói chung, bạn nên trang bị 256MB RAM khi sử dụng hệ thống
WinXP. Nếu để chơi game, thiết kế đồ họa, xử lý phim, bạn nên có 512MB
RAM; càng nhiều càng tốt nhưng còn phụ thuộc vào khả năng hỗ trợ của bo
mạch chủ .
XÁC ĐỊNH LOẠI BỘ NHỚ
Hiện có 3
công nghệ bộ nhớ phổ biến là SDRAM, DDR-SDRAM và RDRAM nên bạn cần xác
định loại bộ nhớ dựa theo tài liệu hướng dẫn của bo mạch chủ.
SDRAM:
Phổ biến trong các hệ thống Pentium, Pentium II, và Pentium III, SDRAM
có 3 loại: PC66, PC100 và PC133; tương ứng với tần số làm việc 66MHz,
100MHz và 133 Mhz.
DDR SDRAM: Phổ biến trong hệ thống
Pentium IV hay AMD. Cũng giống như SDRAM, DDR SDRAM cũng có nhiều loại
tốc độ khác nhau như PC2100, PC2700, PC3200, PC3500 và PC3700 (xung làm
việc tương ứng là 266MHz, 333MHz, 400MHz, 433MHz, và 466MHz)
RDRAM: Là công nghệ bộ nhớ 'xịn' nhất, RDRAM sử dụng cho các hệ thống Xeon và Pentium IV
cao cấp. Do giá còn mắc nên không được phổ biến như 2 loại RAM trên.
ĐỘ TƯƠNG HỢP
Đừng
vội chọn loại RAM tốc độ nhanh vì chưa chắc thích hợp với máy bạn mà
nên chọn loại bộ nhớ có thông số giống như bộ nhớ hiện thời trên hệ
thống. Mua thanh DDR-SDRAM PC3700 tốc độ 466MHz trong khi bo mạch chủ
chỉ hỗ trợ tối đa RAM 266MHz thì xem ra không hiệu quả bằng mua loại DDR
SDRAM PC2100 tốc độ 266MHz.
LẮP ĐẶT
Trước
tiên, bạn phải mở thùng máy và nhớ đeo vòng khử tĩnh điện hoặc tiếp đất
để tránh làm hỏng linh kiện điện tử. Quan sát trên bo mạch chủ, tìm
những khe cắm RAM (có lẽ là dài nhất). Nhấn chốt 2 bên khe cắm RAM còn
trống ra hai bên rồi đặt thanh RAM vào đúng vị trí, nhấn đều 2 đầu (để
không làm hỏng hay trầy xước mạch điện tử) đến khi thấy 2 chốt cắm vào
hai thành thanh RAM. Lắp đặt RDRAM cũng tương tự nhưng cần lắp các thanh
RDRAM theo cặp và đặt CRIMM trong khe cắm trống để khép kín mạch điện.
Đối với loại SDRAM, bạn sẽ phải đẩy nghiêng.
CHẠY THỬ
Hãy
quan sát con số báo dung lượng bộ nhớ khi hệ thống khởi động. Nếu sai
biệt thì nên kiểm tra lại vị trí gắn các thanh RAM. Nếu cần có thể nhấn
phím Pause/ Break để tạm dừng màn hình khởi động.
Khi
thấy hệ thống báo dung lượng RAM đủ và khởi động bình thường vào
Windows, bạn tiếp tục chạy thử một số ứng dụng và kiểm tra xem chúng có
hoạt động tốt không; bởi RAM không tương thích có thể gây ra sự cố treo
máy hay đóng băng.
B. Đối với AMD
Nếu như
từ trước đến nay những dòng CPU của AMD không được phổ biến ở Việt Nam
do chế độ phân phối và bảo hành thì giờ đây với việc Silicom chính thức
trở thành nhà phân phối cho AMD, người dùng sẽ hoàn toàn yên tâm sử dụng
dòng vi xử lý này. Mặt khác, trên thị trường cũng xuất hiện thêm nhiều
sản phẩm bo mạch chủ và phụ kiện (quạt tản nhiệt, đế lắp socket...) cho
CPU AMD. Tuy nhiên có một điều đáng buồn là trước kia sản phẩm của AMD
được yêu thích do chi phí thấp mà hiệu năng cao, còn giờ đây phương châm
đó không còn được như vậy bởi những dòng CPU cao cấp của AMD giá quá
cao, thậm chí vượt hơn Intel. Tuy nhiên người dùng AMD cần chú ý là bộ
xử lý AMD (đặc biệt là AthlonXP) sẽ cho hiệu năng tốt nhất khi RAM chạy
đồng bộ với FSB (tốc độ ngang nhau) và CAS Latency thấp (tốt nhất là 2)
nên việc chọn đúng RAM là rất quan trọng.
+ Duron/Athlon
XP/Sempron Bus 266MHz: Nếu bạn đang sử dụng những loại CPU này thì dĩ
nhiên lựa chọn lý tưởng nhất vẫn là DDR 266MHz. Thường thì do bus thấp
nên bạn có thể tìm được nhiều loại RAM có CAS2, hãy chú ý chi tiết này
và chọn lựa sao cho hợp lý.
+ AthlonXP bus 333/400MHz:
Với hai loại CPU này, việc chọn RAM phụ thuộc nhiều vào chipset của
mainboard mà bạn sử dụng. Thường thì với các loại chipset thông dụng VIA
có số hiệu từ 333 trở xuống như KT333, KT266, KM266... bạn nên dùng RAM
tốc độ 333MHz.
Tại sao lại không tìm mua RAM bus 400MHz?
Lý do rất đơn giản, việc tìm mua một thanh RAM bus 266 hay 333 có CAS
thấp đơn giản hơn nhiều so với tìm một thanh RAM 400MHz CAS2. Đối với
những chipset như KT400, KT600 hay đặc biệt là nVIDIA nForce 2, bạn nên
mua DDR400 bởi ngoài việc chúng hỗ trợ sẵn tốc độ này thì đa số CPU
AthlonXP Barton của AMD đều có thể chạy tốt ở bus 400MHz cho dù mặc định
chúng chỉ là 333MHz mà thôi. Tuy nhiên nhớ chú ý lựa chọn thật kĩ trước
khi mua vì trên thị trường hiện nay có rất nhiều chủng loại RAM DDR400
với nguồn gốc khác nhau. Chi tiết về việc chọn lựa RAM bạn có thể tham
khảo bài viết 'Overclock - Được, mất và những điều cần biết' (Thế Giới
Vi Tính A 9/2003). Chú ý nForce2 hỗ trợ Dual Channel DDR 400MHz.
+
Athlon 64: Hầu như tất cả các hệ thống Athlon64 đều yêu cầu tối thiểu
RAM có bus 400MHz, những hệ thống Socket939 mới hỗ trợ Dual Channel nên
bạn phải nhớ chọn mua cho phù hợp.
DDR-II
Mặc
dù đã xuất hiện được một thời gian dài nhưng DDR-II dường như chưa tạo
được ấn tượng tốt với người dùng, chìa khóa chính để nhà sản xuất nâng
băng thông của DDR-II lên chính là việc nhân chip nhớ chạy ở một nửa tần
số của bộ đệm I/O và điều này đồng nghĩa với việc bộ đệm dữ liệu chạy ở
tốc độ gấp đôi nhân. Thông thường nếu RAM có tốc độ 100MHz thì bộ đệm
dữ liệu cũng chạy ở tốc độ 100MHz, nhưng với DDR, tốc độ này là 200MHz.
Trong DDR-II, bộ đệm dữ liệu chạy ở 200MHz vẫn với xung nhịp 100MHz của
RAM, điều này cho phép chúng xử lý được 4 bit dữ liệu trong một xung
nhịp vì tốc độ gấp đôi nên khi áp dụng nguyên tắc DDR lên thì chúng ta
sẽ được tần số dữ liệu thực lên tới 400MHz với chỉ 100MHz tốc độ hoạt
động của RAM. Nói một cách đơn giản hơn:
Với DDR1: 100MHz xung thực -> 100MHz bộ đệm dữ liệu -> 200MHz tốc độ dữ liệu (DDR).
Với DDR2: 100MHz xung thực -> 200MHz bộ đệm dữ liệu -> 400MHz tốc độ dữ liệu (DDR).
Như
vậy độ trễ CAS của DDR-II sẽ có nhiều điểm khác biệt so với DDR-I hiện
tại và thường được đặt ở mức 4 hoặc 5. Ngoài ra nếu bạn muốn sử dụng
DDR-II cho máy tính để bàn của mình, bạn không có sự lựa chọn nào ở thị
trường Việt Nam ngoài những bo mạch chủ có chipset Intel 915 và 925,
điều này sẽ kéo theo nhiều nâng cấp khác như CPU Socket 775 và card đồ
họa PCI-Express. Mặc dù vậy, tốc độ của DDR-II vào thời điểm hiện tại
chưa chứng tỏ được sức cạnh tranh so với DDR truyền thống nên không được
người dùng quan tâm nhiều. Bạn có thể tìm thấy một vài sản phẩm của
Samsung, Kingston hay KingMax ở nhiều cửa hàng trong cả nước nếu cần.
BỘ NHỚ VIDEO
Bên cạnh chip bộ nhớ chính còn nhiều loại chip nhớ đặc biệt phát triển riêng cho ứng dụng video.
VIDEO RAM (VRAM)
VRAM
được phát triển dựa trên công nghệ FPM (fast page mode), có hai cổng
giao tiếp thay vì một cổng như thông thường: một cổng dành cho chức năng
làm tươi màn hình) cổng còn lại xuất ảnh ra màn hình. Nhờ thiết kế này,
VRAM hoạt động hiệu quả hơn DRAM trong những ứng dụng video. Tuy nhiên,
do sản lượng tiêu thụ chip video ít hơn chip nhớ chính nên giá còn cao.
Vì thế, trong một số hệ thống card video ít tiền, người ta có thể dùng
DRAM thông thường để giảm giá thành.
GRAPHIC DDR (GDDR)
GDDR
(DDR đồ họa) được phát triển dựa trên công nghệ DDR SDRAM dành riêng
cho đồ họa. Sau phiên bản GDDR-2 thiết kế dựa trên DDR-II, ATI và NVIDIA
đã kết hợp chặt chẽ với các nhà sản xuất bộ nhớ để đưa ra phiên bản
GDDR-3 có điện áp làm việc thấp hơn GDDR-2, làm việc từ tần số 500MHz
đến 800MHz với mục tiêu giảm điện năng tiêu thụ, tăng mật độ chip nhớ và
đơn giản hóa giải pháp tản nhiệt.
WINDOW RAM (WRAM)
WRAM
là một dạng bộ nhớ hai cổng khác, được dùng trong những hệ thống chuyên
xử lý đồ họa. Hơi khác VRAM, WRAM có cổng hiển thị nhỏ hơn và hỗ trợ
tính năng EDO (Extended Data Out).
SYNCHRONOUS GRAPHIC RAM (SGRAM)
SGRAM
là loại SDRAM thiết kế riêng cho video với chức năng đọc/ghi đặc biệt.
SGRAM cho phép truy xuất và chỉnh sửa dữ liệu theo khối thay vì từng đơn
vị nên giảm bớt số lượt đọc/ghi bộ nhớ và tăng hiệu năng của bộ điều
khiển đồ họa.
BASE RAMBUS VÀ CONCURRENT RAMBUS
Trước
khi trở thành công nghệ bộ nhớ chính, công nghệ Rambus được dùng làm bộ
nhớ video. Công nghệ bộ nhớ Rambus dùng làm bộ nhớ chính hiện tại được
gọi là Direct Rambus. Còn hai dạng Rambus sơ khai là Base Rambus và
Concurrent Rambus được dùng cho ứng dụng video trong máy trạm và hệ
thống game video như Nintendo 64.
3. KINH NGHIỆM
Chắc
chắn bạn cũng nhận thấy một điều là sự lựa chọn vào thời điểm hiện tại
gần như chỉ giới hạn trong loại RAM DDR bởi DDR-II và RDRAM hầu như
không phổ biến. Đa số những loại DDR đang được bán ở các cửa hàng linh
kiện máy tính đều có khả năng hoạt động trơn tru trên mọi hệ thống. Tuy
nhiên, để có được loại RAM tốt, hiệu năng cao đồng thời bạn vẫn muốn
'nghịch ngợm' ép xung được thì sẽ phải bỏ ra một chút công sức. Thông
dụng nhất là DDR400 hay còn gọi là PC3200 với hàng chục loại khác nhau
và giá cả chênh nhau từ vài USD cho tới vài chục USD! Để tiện, chúng ta
sẽ phân làm hai loại: 'bình dân' và 'cao cấp'. Những loại RAM bình dân
thường không có vỏ thép mà chỉ gồm thanh RAM không, một số hàng thuộc
dòng này của những hãng tên tuổi như Corsair hay Kingston thì có thêm
hộp nhựa đựng rất lịch sự và ghi rõ là Value RAM. Dòng Value RAM nói
chung chất lượng không được đồng đều và phụ thuộc khá nhiều vào loại
chipset mà hãng sản xuất sử dụng, mỗi đợt hàng chất lượng lại rất khác
nhau nên việc mua được sản phẩm tốt hay dở đa phần đều nhờ may mắn. Ví
dụ như Kingston Value RAM PC3200 có đợt là RAM CAS 2,5, có đợt lại là
CAS 3; Adata PC3200 có vỏ nhựa lúc mới ra thì bị xem thường nhưng về sau
thì lại được khen và sức mua mạnh dẫn tới hiếm hàng. Vậy bí quyết là
gì?
Thường khi mua RAM thuộc dòng cấp thấp, bạn có thể
rất dễ dàng nhìn thấy những kí hiệu ghi trên chip RAM và những thanh RAM
có chất lượng tốt thường sử dụng chip nhớ của những hãng có tên tuổi
như Winbond, Samsung, Hynix, Huyndai, Kingston, Kingmax... chú ý chọn
loại RAM có 8 chip nếu có thể. Ngoài ra bạn có thể kiểm tra thông số
Access Time thông qua đoạn mã ghi trên chip RAM ví dụ như với một thanh
Elixir bình thường có mã số là N2DS25680BT-5T thì -5 chính là thông số
bạn cần tìm, từ đó suy ra tốc độ của thanh RAM này khoảng 400MHz trở
lên. Yếu tố cuối cùng mà bạn kiểm tra là chất lượng bản mạch và độ tinh
xảo của mạch in, hãy thử uốn nhẹ thanh RAM để kiểm tra độ bền, một số
RAM có các lớp bản mạch dập không được khít và phát ra tiếng kêu khi uốn
hơi cong sẽ dễ hỏng hơn những thanh khác.
Với những
dòng RAM cao cấp thì việc lựa chọn sẽ khó khăn hơn nhiều do vỏ hộp lẫn
bản thân thanh RAM đều được đóng gói bảo vệ rất kĩ lưỡng. Việc tháo vỏ
đóng gói để xem bên trong là không thể, bạn chỉ có thể nhận diện chất
lượng của RAM thông qua mã số sản phẩm và ngày tháng sản xuất, nhìn
chung những sản phẩm thuộc dòng cao cấp có chất lượng khá tốt đáp ứng
được hầu hết người dùng kể cả khi bạn muốn ép xung, chỉ trừ một vài
người thuộc loại 'quái kiệt' với đầy đủ đồ nghề 'xịn' cho overlocking
mới có yêu cầu cao hơn. Những loại RAM tốc độ cao thuộc series cao cấp
nổi bật ở thị trường Việt Nam vào thời điểm hiện tại có thể kể:
+
Kingston HyperX: Với tốc độ từ 400MHz cho tới 500MHz và được phân phối
thông qua đại lý chính hãng nên người dùng có thể yên tâm sử dụng, tuy
nhiên hệ số CAS của HyperX khá cao nên không được người dùng AMD ưa
chuộng. Một số series HyperX sản xuất trước kia sử dụng chipset Winbond
BH-5 được dân overlocker săn lùng liên tục.
+ Adata
Vitesta: Tốc độ từ 500MHz đến 600MHz, giá thành khá rẻ, trong thử nghiệm
một thanh Atada Vitesta ngẫu nhiên có thể chạy CAS 2,5 (mặc định của
nhà sản xuất là 3) ở bus 500MHz (chế độ kênh đôi Dual Channel) ổn định.
+
Mushkin Level 2 Black Cover: Tốc độ từ 400MHz tới 466MHz. Hiện tại đây
là loại RAM được giới sành đồ chơi máy tính đánh giá khá cao về khả năng
nâng lên tốc độ cao và CAS thấp, đặc biệt dòng mới nhất sử dụng chip
nhớ Samsung kí hiệu TCCD cho kết quả tốt hơn nhiều và thậm chí còn vượt
xa dòng BH-5 trước kia. Loại chip nhớ TCCD còn được sử dụng cho cả những
series RAM có bus mặc định là 600MHz (PC4800).
+
Corsair: Sau một thời gian dài vắng bóng, hiện tại Corsair đang dần lấy
lại phong độ với dòng sản phẩm RAM XMS C2PT cao cấp mới nhất (revision
4.1) dùng chipset TCCD, trong những thử nghiệm của diễn đàn VOZ, hầu hết
các loại RAM sử dụng chipset TCCD đều có thể vượt qua bus 550MHz dễ
dàng thậm chí với hệ số CAS chỉ ở mức 2,5. Ngoài ra hãng còn cung cấp
dòng RAM có CAS 2 với dàn đèn Data Indicator nháy theo hoạt động khá
đẹp. Tuy nhiên bạn cần lưu ý theo ý kiến nhiều người dùng thì những sản
phẩm RAM cao cấp của Corsair có chất lượng không được đồng đều cho lắm.
+
Gskill: Đây là một tên tuổi mới đối với người dùng trong nước, tuy
nhiên sự ra mắt của hãng với dòng RAM DDR600 (chip nhớ TCCD) thực sự gây
ấn tượng. Mặc dù vậy số lượng hàng không nhiều và việc tìm mua rất khó
khăn.
Ngoài ra những nhà sản xuất như OCZ hay Geil cũng
có nhiều sản phẩm cao cấp mà bạn có thể tìm mua nhưng thường khá hiếm vì
không có đại lý phân phối chính thức trong nước.
BỘ NHỚ CẢI TIẾN
ENHANCED SDRAM (ESDRAM)
Để
tăng tốc độ và hiệu năng, thanh nhớ chuẩn có thể được tích hợp thêm bộ
đệm SRAM (Static RAM) trực tiếp trên chip. ESDRAM là SDRAM có thêm bộ
đệm SRAM để có khả năng làm việc với tần số 200MHz. Cũng tương tự nguyên
lý bộ nhớ đệm ngoài, DRAM cũng dùng một bộ đệm SRAM để lưu dữ liệu
thường dùng, nhằm rút ngắn thời gian truy xuất DRAM. Ưu điểm của SRAM
trên chip là tạo lập tuyến bus rộng hơn giữa SRAM và DRAM, tăng cường
băng thông và tốc độ DRAM một cách hiệu quả.
FAST CYCLE RAM (FCRAM)
FCRAM
được Toshiba và Fujitsu đồng phát triển nhằm phục vụ máy chủ, máy in
cao cấp và hệ thống chuyển mạch viễn thông. Bộ nhớ được phân thành nhiều
mảng và có thiết kế hàng đợi nên tăng được tốc độ truy xuất ngẫu nhiên
và giảm điện năng tiêu thụ.
SYNCLINK DRAM (SLDRAM)
Hiện tại tuy đã lỗi thời nhưng SLDRAM từng được
cộng đồng chế tạo DRAM phát triển nhằm cạnh tranh với Rambus vào cuối thập niên 1990.
VIRTUAL CHANNEL MEMORY (VCM)
Do
NEC phát triển, VCM cho phép các 'khối' bộ nhớ khác nhau giao tiếp độc
lập với bộ điều khiển nhớ và có đệm riêng. Cách này cho phép mỗi tác vụ
hệ thống thành một khối riêng, không chia sẻ hay dùng chung với các tác
vụ cùng chạy khác.
BỘ NHỚ FLASH
Bộ nhớ
Flash là dạng bộ nhớ ghi lại được, không mất, trạng thái ổn định, có
chức năng kết hợp của RAM và ổ đĩa cứng. Bộ nhớ flash lưu bit dữ liệu
dưới dạng tín hiệu điện trong ô nhớ (giống DRAM) nhưng có khả năng nhớ
cả khi ngắt điện (giống đĩa cứng). Nhờ đặc tính điện thế thấp, ổn định,
tốc độ cao, bộ nhớ flash thích hợp với rất nhiều ứng dụng di động như
máy ảnh số, máy quay phim số, điện thoại di động, máy in, PDA, máy nhắn
tin, máy ghi âm số, máy MP3, hệ thống GPS.
4. ĐIỀU CHỈNH BIOS CHO PHÙ HỢP
A. Tốc độ
BIOS
của BMC Asus P4C800 Deluxe. Bạn có thể thấy phần điều chỉnh tốc độ
(DRAM Frequency) và phần chỉnh điện thế (DDR Reference Voltage).
Muốn
tối ưu hóa hiệu năng của RAM, bạn chỉ có cách sử dụng BIOS của máy
tính, nhấn Del khi khởi động để vào BIOS. Thường các thông số của RAM
chia làm hai mục, tỉ lệ của RAM sẽ nằm trong phần CPU Voltage/Frequency
(một số hãng sản xuất lại đưa chúng vào nhóm riêng ví dụ như Soft Menu
(Abit), Genie Bios (DFI)... Trong phần này, mỗi hãng có cách sắp xếp
khác nhau nhưng đều dựa trên một nguyên tắc chung là tốc độ của RAM tỉ
lệ với FSB của CPU theo một hệ số nhất định. Một số hãng như Asus chọn
cách hiển thị tốc độ RAM trực tiếp giúp người dùng không mất thời gian
tính toán còn Abit lại chọn cách sử dụng tỉ lệ, bạn sẽ phải nhân, chia
để có kết quả tốc độ tuy nhiên điều này sẽ giúp bạn có thêm kiến thức và
hiểu rõ hơn về thông số của máy tính. Tốc độ của RAM được tính theo tỉ
số CPU/DRAM, ví dụ khi CPU có bus ngoài là 200MHz (ở những CPU bus
800MHz) và tỉ lệ này là 1:1 thì RAM sẽ chạy ở bus 200MHz (400MHz DDR).
Khi tỉ lệ là 5:4, bus ngoài CPU là 200MHz thì tốc độ RAM sẽ là (200/5)*4
= 160MHz (320MHz DDR).
BIOS của BMC Abit IC7 MAX3, tương tự như của Asus nhưng tốc độ RAM được xác định qua tỉ lệ (DRAM Ratio)
Riêng
những thông số khác về RAM như CAS Latency, RAS-to-CAS Delay... đều
được tất cả các nhà sản xuất đưa vào một nhóm chung có tên là Advance
Chipset Configuration. Có thể bạn sẽ cảm thấy hoa mắt nhưng thông số
quan trọng nhất là phần DRAM Timing bao gồm bốn thông số chính theo thứ
tự là CAS Latency, Act to Precharge Delay, Ras-to-CAS Delay và DRAM Ras
Precharge. Nếu bạn gặp thông số RAM kiểu như 2-2-2-5 hay 2-3-3-7 thì đó
chính là bốn thông số được xếp theo đúng thứ tự như vậy. Ý nghĩa của
những thông số còn lại bạn có thể tham khảo sách hướng dẫn đi kèm của
từng bo mạch chủ.
B. Điện thế:
Cũng trong
những hình ảnh trên, bạn có thể thấy có một chỉ số về điện thế cung cấp
cho RAM (DRAM Voltage). Thường thì DDR sử dụng mức điện thế 2,5v và
DDR-II là 1,8v. Một số loại RAM DDR tốc độ cao có thể yêu cầu tới 2,8v
hoặc 2,85v, đối với những loại này bạn phải tham khảo tài liệu hướng dẫn
đi kèm để có được thông tin. Tuy nhiên bạn cần tuân theo một nguyên tắc
an toàn là: Không nên kéo điện thế lên quá 2,9v nếu không có giải pháp
tản nhiệt hữu hiệu vì RAM có thể sẽ bị cháy hoặc phồng IC sau một thời
gian sử dụng. Đối với những loại bo mạch chủ rẻ tiền, bạn sẽ không chỉnh
được điện thế của RAM mà chỉ có thể thay đổi được tốc độ. Trong trường
hợp này bạn có thể sử dụng một vài món đồ chơi chuyên dụng như DDR
Booster của OCZ. Theo thống kê từ phía người dùng, những chip RAM của
Samsung có khả năng chịu được điện cao nhất và ép xung lên được mức tốc
độ tương xứng, còn những loại chip của Winbond thì có thể chạy ở tốc độ
cao ngay cả với điện thế mặc định hoặc nhỉnh hơn một chút. Điện thế của
RAM thậm chí còn ảnh hưởng cả đến timing nên nếu thanh RAM bạn mua về
không chạy được ở mức timing thấp thì bạn có thể thử đẩy điện thế lên
một chút xem sao.
Sau khi đã có đủ những giải pháp về
phần cứng, điều quan trọng nhất của việc chọn RAM chính là hiệu năng cao
và ổn định, bạn sẽ cần đến những phần mềm chuyên dụng để kiểm tra tốc
độ cũng như khả năng hoạt động lâu dài của RAM cho dù chạy ở tốc độ mặc
định hay ép xung. Hai chương trình sáng giá nhất được nhiều người dùng
đánh giá cao là Sisoft Sandra 2005 (http://www.sisoftware.co.uk/) và Passmark Burn-in Test (http://www.passmark.com).
Hai chương trình này có khả năng kiểm tra băng thông của RAM kèm theo
thử nghiệm tối đa 'nội lực' của RAM để phát hiện lỗi nếu có. Nếu như RAM
của bạn đạt được thời gian kiểm tra từ 8 đến 10 tiếng và tốc độ chấp
nhận được thì bạn là người may mắn, nếu không hãy kiểm tra lại toàn bộ
mọi thiết bị hoặc liên hệ với nơi bán để đổi loại khác.
Tóm
lại, việc chọn mua một loại RAM đúng với cấu hình máy tính và phù hợp
với công việc của mình là rất quan trọng. Việc mua RAM từ các hãng tên
tuổi dĩ nhiên sẽ đảm bảo cho bạn về chất lượng cũng như bảo hành. Mặc dù
đa số các loại RAM trên thị trường vào thời điểm hiện tại đều có thời
hạn bảo hành 3 năm nhưng sẽ thật phiền toái nếu RAM hỏng và bạn phải
chạy đi chạy lại để liên lạc với nơi bán; chưa kể chuyện thanh RAM chập
chờn có thể cho dữ liệu quan trọng của bạn ra đi không lời từ biệt chỉ
trong tích tắc. Nói chung nếu là máy tính cho văn phòng, bạn hoàn toàn
có thể mua những loại RAM phổ thông để tiết kiệm chi phí, dĩ nhiên là
phải kiểm tra cẩn thận. Còn nếu như bạn là 'dân chơi' overlock sành sỏi
hoặc thường xuyên chơi game tốc độ cao hay chỉ đơn giản là muốn làm cho
chiếc máy tính của mình trông 'xịn' hơn thì có thể lướt qua dòng sản
phẩm cao cấp nhưng hãy nhớ kiểm tra cái ví của mình trước! Giá của chúng
chắc chắn không hề rẻ chút nào.
Phần II:CPU
1. Bus speed của CPU
Khái
niệm Bus: là đường dẫn điện nội bộ mà theo đó các tín hiệu được truyền
từ thiết bị này đến thiết bị khác trên main. Máy tính thiết kế bus của
bộ xử lý theo ba loại :
Bus dữ liêu (data bus): truyền dữ liệu giữa ram và cpu
Bus địa chỉ: xác định vị trí nhớ nào sẽ được đưa vào hoạt động.
Bus điều khiển (control bus): truyền các tín hiệu của các bộ phận điều khiển
Người
ta sẽ phát triển bus dữ liệu của máy tính bằng cách nối cpu với một
hoặc nhiều khe cắm mở rộng, và gọi là bus mở rộng (expansion bus). Bus
địa chỉ, dữ liệu, mở rộng được mắc nối theo những hàng dây dẫn song
song, cho nên tất cả các bit cần gửi đi sẽ được truyền cùng một lúc,
giống như 16 hoặc 32 chiếc ôto dàn hàng ngang cùng chạy về một hướng
trên xa lộ cao tốc.
Data bus có 2 khái niệm :
- bus width (độ rộng bus)
- bus speed (tốc độ của bus). 2 thằng này nhiều người lầm.
Vd : Từ Biên Hòa lên SG bằng con đường quốc lộ 1A. Đường này có bề rộng 10m và tốc độ 50km/h
Con đường = BUS
bề rộng = bus width
50km/h = bus speed
bus
speed ở trên không đề cập đến CPU s/d công nghệ Quad Data Rate (QDR)
vận chuyển 4 phần dữ liệu trong 1 chu kỳ đồng hộ (clock cycle) ->
hiệu suất gấp 4 lần CPU thường chuyển chỉ 1 phần dữ liệu trong 1 chu kỳ
đồng hồ. Như vậy, tốc độ bus danh định (external bus speed) mà ta thường
quen gọi là FSB của CPU cao gấp 4 lần so với tốc độ thật (real clock
rate) được sử dụng bởi CPU.
Tốc độ truyền cực đại (maximum trasfer rate) (MB/s) = 1/8 real lock rate X số liệu đường truyền tải của một clock X 64
64 : nghĩa là CPU truyền dẫn với RAM 64bit mỗi chu kỳ đồng hồ, chia 8 tính ra byte
VD : 800Mhz có External Bus Speed (FSB) 800Mhz thì
Real clock rate = 200MHz
Maximum trasfer rate = 1/8 (200 x 4 x 64 ) = 6400 MB/S
External bus speed -> Real Clock rate - maximum tranfer rate tương ứng:
400 MHz -> 100 MHz - 3200 (MB/s)
533 MHz -> 133 MHz - 4264 (MB/s)
800 MHz -> 200 MHz - 6400 (MB/s)
Phân biệt Dual Core và Core Duo
Các bạn nên phân biệt giữa đặc điểm của CPU và tên dòng CPU.
Dual core là đặc điểm của CPU, cho ta biết CPU này thuộc loại dual core, tức CPU có 2 nhân.
Ví dụ:
AMD Athlon 64 X2 3600+ là CPU dual core.
Intel Pentium D 820 là CPU dual core.
Intel Core 2 Duo E4300 là CPU dual core.
Core
Duo là 1 thương hiệu của hãng Intel. Core Duo là dòng sản phẩm CPU dành
cho laptop. Intel Core Duo là loại CPU dual core, tức CPU có 2 nhân.
Core 2 Duo cũng tương tự như vậy nhưng dòng Intel Core 2 Duo được dành cho desktop.
Ví dụ:
Intel Core Duo T2400 là CPU dual core.
Intel Core 2 Duo E6300 là CPU dual core.
Hiện
nay trên thị trường chỉ có duy nhất 1 dòng CPU có từ "dual core" trong
tên của mình, đó là dòng Intel Pentium Dual-Core. Dòng CPU này sử dụng
cho laptop.
Ví dụ:
Intel Pentium Dual-Core T2060 là CPU dual core.
2. Bus speed của RAM
Đối với RAM, tùy theo công nghệ của từng loại mà exernal bus speed và real clock rate được tính theo công thức khác nhau.
Memory external bus - real clock rate - maximum transfer rate tương ứng:
PC100: 100 - 100 - 800
PC133: 133 - 133 - 1066
DDR333: 333 - 166 - 2700
DDR400: 400 - 200 - 3200
DDR2-400: 400 - 200 - 3200
DDR2-533: 533 - 266 - 4264
DDR2-667: 667 - 333 - 5336
DDR2-800: 800 - 400 - 6400
SDRAM: real clock rate = External bus
DDRAM: Real clock rate = 1/2 external bus
Điều
này cũng được giải thích tương tự như bus speed của CPU nhờ loại RAM
này được s/d công nghệ Double Data rate (DDR), nghĩa là nó chuyển 2 phần
dữ liệu trong 1 chu kỳ đồng hồ -> hiệu suất tăng 2 lần.
Công thức tính Maximum transfer rate thì hoàn toàn tương tự như cách tính CPU
* Chọn RAM tương thích với CPU
Dựa
vào real clock rate của CPU và RAM. Nghĩa là để RAM có thể hoạt động
cùng với CPU thì Real Clock rate của RAM phải > or = CPU. Nếu real
clock rate của RAM nhỏ hơn -> xảy ra hiện tượng “thắt cổ chai” (
bottleneck problem ) -> Chọn RAM theo external là không chính xác
VD
: Pentium D 2,8 GHz FSB 800 MHz thì real clock rate của CPU = 200 ->
chọn RAM có real clock rate tối thiểu =200 (dựa vào bảng trên để lựa).
real clock của RAM >200 càng tốt.
Để đảm bảo RAM và CPU làm việc tốt nhất thì nên dựa vào maximum transfer rate của CPU.
VD
: D 2,8GHz FSB 800MHz có Maximum transfer of CPU = 6400 MB/s -> chọn
RAM loại RAM DDR2 có external bus là 800 MHZ thì CPU mới làm việc tốt
nhất.
Vậy nguyên tắc maximum transfer of RAM = maximum transfer of CPU
* Bản chất của việc dùng RAM kênh đôi (RAM DDR Dual Channel)
Khi
cấu hình DDR Dual Channel, RAM được truy cập cùng lúc đến 128 bit thay
vì 64bit so với tốc độ bình thường không dùng kênh đôi -> tốc độ
truyền tăng gấp đôi. Để sử dụng được kênh đôi, mainboard phải hỗ trợ một
số chẵn lần khe cắm DDR hoàn toàn giống nhau (2 or 4 khe, cùng màu ở vị
trí 1-3 hay 2-4. Không cắm 2 thanh ở vị trí 1-2 hay 1-4 sẽ không sử
dụng được kênh đôi. Còn 4 khe cắm luôn 4 thanh thì s/d được) và 2 hay 4
thanh phải cùng dung lượng, cùng tốc độ, cùng model (DDR/DDR2/DDR3). Nếu
cùng nhà sản xuất càng tốt.
* Sự khác biệt cơ bản giữa DDR single Channel (Kênh đơn) và DDR Dual Channel (Kênh đôi):
Single
Channel : là chế độ hoạt động của RAM DDR mà dữ liệu truyền từ CPU
-> RAM và dữ liệu truyền từ RAM -> CPU không đồng thời cùng lúc.
Giả sữ dữ liệu truyền từ CPU -> RAM mất 1 giây thì trong giây tiếp
theo 1 dữ liệu khác mới được truyền từ RAM-> CPU với cùng một tốc độ.
Dual
Channel : chế độ hoạt động của RAM mà dữ liệu truyền từ CPU->RAM và
RAM->CPU được thực hiện đồng thời cùng lúc. Nghĩa là giả sử dữ liệu
truyền từ CPU -> RAM mất 1 giây thì cũng trong giây đó một dữ liệu
khác cũng được truyền từ RAM -> CPU với cùng tốc độ -> tiết kiệm
được 1 giây so với dùng Single channel
Ta thấy rằng khi dùng Kênh Đôi thì bus width mới được tăng gấp đôi. Đây là hiệu quả chính của Kênh đôi
Giả
sử có CPU FSB 800 MHz thì 2 thanh RAM DDR Dual Channel 400 MHz cắm kênh
đôi sẽ cho maximum transfer rate tăng gấp đôi = 6400 MB/s nhưng
external bus speed của RAM vẫn là 400 MHz chứ không tăng. Có thể tăng
external bus speed của RAM thông qua việc overclock (ép xung) RAM.
Nếu có dual-channel thì thay vì mua một cây 1GB thì mua 2 cây 512 giống hệt sẽ có băng thông tốt hơn.
ĐỌC THÊM:
Cái từ "Core 2 Duo" làm nhiều người nhầm nó là 1 từ đơn, thật ra, nó là 1 từ ghép, bao gồm 2 phần: phần Core 2 và phần Duo
Core
2 là thế hệ thứ 8th của x86 architecture (Intel). Trong Architecture cò
nhiều Family, trong Family có nhiều Series, trong series thì có hàng
đống tên sản phẩm....
x86 architecture Intel:
1---- 8086
2---- 80186
3---- 80286 (thời Cha anh ở VN học vi tính)
4---- 386
5---- 486 (thời chúng ta bắt đầu học vi tính)
6--- Pentium
----------- Pentium
------------------- Pentium pro
------------------- Pentium II
------------------- Pentium III
------------------- Pentium IV (bắt đầu từ thời này người ta dùng công nghệ 65 nm)
------------------- Pentium D (chữ D dính liền với Multiprocessors, nhiều Chip xử lý trên 1 bản silicon của 1 CPU)
------------------- Pentium M (chữ M dính liền với công nghệ Centrino)
------------------- Pentium Extreme Edition (nâng cấp của Pen D, cũng là Multiprocessors)
------------------- Pentium Dual (Duo) (nâng cấp của Pen D)
----------- Celeron
------------------- Celeron thường
------------------- Celeron M
------------------- Celeron D
7--- Core (là tên thương mại của hệ thống Yonah, có thời gian sẽ nói thêm)
----------- Solo (chỉ có nghĩa là 1 nhân, không nhất thiết phải dùng công nghệ Centrino)
----------- Duo (2 nhân)
8--- Core 2
----------- Solo
----------- Duo
------------------- Conroe
------------------------ E6300
------------------------ E6400
------------------------ E6650
------------------------ E6700
------------------------ E6750 (trong tương lai gần)
------------------------ E6800
------------------------ E6850
------------------- Conroe XE
------------------- Allendale
------------------- Merom
------------------- Penryn
------------------- Kentsfield
------------------- Yorkfield
------------------- Conroe-L
Từ "nhân":
“Nhân” = chữ "Core" trong Dual-Core (!!! nhưng không phải trong Core Duo!!!)
“Nhân” = chữ processor trong "Multiprocessor"
Hệ số nhân của CPU – Multiplier (hay còn gọi là CPU Ratio)
HSN này có nhiệm vụ xác lập tốc độ thực của CPU (core speed)
Core speed sẽ được xác định qua công thức sau :Core speed = HTT x Multiplier
Hệ số nhân của HT bus – LDT (Lightning Data Transport)
HSN LDT dùng để xác lập tần số HT bus khi CPU giao tiếp với chipset, HT bus được tính bằng công thức sau :HT bus = HTT x LDT
bus CPU = frequency (tốc độ xung nhịp) chia cho multiplier (hệ số nhân)
ta
luôn có 1 tỉ lệ nhất định giữa bus thực của CPU với bus thực của RAM,
gọi là bộ chia (divider), trong đó, bus thực của CPU = tốc độ đinh danh
của nó : hệ số nhân hoặc = FSB : 4 (do công nghệ Quad Data Rate của
Intel ta mới có FSB như vậy). Như vậy chọn RAM phải nhìn vào bus thực
của CPU và RAM cộng với bộ chia tối thiểu để đảm bảo tránh xung đột, đó
là tỉ lệ CPU:RAM = 1:1 (tức là bus CPU < hoặc = bus RAM). Do đó, nếu
có 1 CPU FSB 800Mhz, ta chọn RAM tối thiểu là DDR400 (cả 2 cùng có bus
speed = 200, tỉ lệ là 1:1), ngoài ra chọn RAM cao hơn cũng ko hề lãng
phí, chipset có thể chạy đc ở các bộ chia khác như 2:3, 4:5...
Tỉ
lệ CPU:RAM < hoặc = 1 là phù hợp, bởi vì hiểu đơn giản: RAM cung cấp
data cho CPU, nếu CPU chạy nhanh hơn RAM (tỉ lệ > 1) thì ép nhau
quá. Ngược lại, RAM chạy bằng CPU hay nhanh hơn thì data mà CPU yêu cầu
luôn đc đáp ứng, với bus RAM càng lớn, ta lại càng có băng thông bộ nhớ
cao >>> càng có lợi.
HT viết tắt của Hyper Threading
HTT viết tắt của HyperTransport Technology
Tại sao Ram bus 400 thì có bus thực là 200 >>> Điều này mình đã nói ở trên ( do công nghệ Quad Data Rate )
công
nghệ Quad Data Rate (QDR) vận chuyển 4 phần dữ liệu trong 1 chu kỳ đồng
hồ (clock cycle). Như vậy tốc độ bus danh định (external bus speed) tức
là FSB của CPU cao gấp 4 lần tốc độ thật của nó (real clock rate).
>>>có
thể tính bus RAM mà hệ thống sẽ hoạt động theo công thức:Lấy bus CPU
chia 4, tất cả đem nhân với 2 (hay nói cách khác, lấy bus CPU chia 2).
bạn
chọn Ram bus 400 >> bus RAM của hệ thống (bus thực) sẽ là:
(400/4)*2 = 100*2 = 200 >>> bus cpu là 800 (FSB của CPU cao gấp
4 lần).
HT - > Hyper Threading <-- của Dòng Chip Intel
HTT Hyper Transport Technology <-- của dòng Chip AMD
RAM Bus là 400 thì FSB của nó chỉ là 200Mhz mà thôi (FSB khác Bus nhé)