Arsn
2012/10/06, 09:54
با سلام و عرض ادب خدمت همه سخت افزاری های عزیز !
این دفعه با بررسی یک قطعه طرف نیستیم ! خب طبیعی هم هست چون نه کسی توان خرید داره و نه من قطعه جدیدی به دستم رسیده است !
پس بهتره بریم سراغ یه مبحث کم خرج تر و کمی قضیه را آموزشی کنیم تا بهتر قدر قطعاتمون را بدونیم و دعا دعا کنیم که یه وقت نسوزند که دیگه قطعه خریدن کار هر کس نیست !
البته به شدت توصیه میکنم مقاله را بخونید چون برای اکثر ما یک نکته آموزشی که قبلا نمیدونستید داره !
***
همه ما با حافظه های اصلی و فرعی آشنا هستیم ، همیشه هم در قسمت های مختلف فروم به معرفی انواع اونها ، نحوه کارکرد ، جدیدترین مدل ها و... پرداختیم ! از بخش "حافظه اصلی (Ram) " گرفته تا بخش پر و پیمان "حافظه های جانبی" !
اما تا حالا از خودتون پرسیدید که این اطلاعات چگونه و با چه روشی روی ابزار های ما قرار میگیرند ؟
رم چه جوری پر میشه ؟ اطلاعاتی که ما معتقدیم به صورت راندوم روی اون قرار میگیره از کجا میاد ؟ بلاک های دیتا چه سایزی دارند ؟ چقدر ظرفیت دارند ؟ بیت ها و بایت ها چه نظمی دارند ؟ و...
خب مهم نیست که سوال های بالا را از خودتون پرسیدید یا نه ! چون ما هم قصد جواب دادن به همه اونها ها را نداریم !
لااقل همه اونها در حوصله این مقاله نمیگنجه ! فعلا مطالب را به صورت کلی میگیم ! چون قراره سری مقالاتی با مفهوم آموزش تئوری کامپیوتر در فروم سخت افزار داشته باشیم !
میخوایم به صورت کلی بررسی کنیم که اطلاعات چگونه روی کامپیوتر ذخیره میشه !
خب ، طبق عادت مألوف از بیسیک ترین جای ممکن شروع میکنیم !
****
همانطور که همه ما میدونیم حافظه مکانی برای ذخیره سازی اطلاعات است ، که به صورت دائم یا موقت اطلاعات درون آنها ذخیره میشوند ! دقیقا همان نقشی که ما در مغز انسان به حافظه موقت و حافظه طولانی مدت نسبت میدهیم !
وظیفه حافظه اصلی در دسترس قرار دادن اطلاعات و دستور العمل هایی است که به صورت کش شده از هارد به عنوان واسط مهیا میشود ! بدین صورت که اطلاعات ضروری + اطلاعات نرم افزار ها به صورت راندوم بر روی رم طبقه بندی شده و آماده انتقال به کش L3 در پردازنده های جدید میشود !
حال اینکه تعاریفی مثل نسل مموری ، زمان تاخیر ، باس و... در همین مرحله یعنی انتقال اطلاعات رم معنا پیدا میکنند و تفاوت های خود را محقق میسازند !
بگذارید مثالی بزنم : فرض کنید برنامه ای را اجرا میکنید که وظیفه آن جمع چند عدد است ! برنامه از هارد بر روی رم بارگذاری میشود ، اطلاعات نرم افزار بر روی کش L3 پردازنده قرار میگرند بخش ALU با استفاده از دستور العمل های از پیش آماده خود در کش L1 شروع به پردازش میکند ! (همانطور که میدانید ظرفیت کش L1 به عنوان سریعترین کش ، بسیار محدود و در حدی کمتر از 128 کیلوبایت است که دستور العمل ها و نحوه پردازش را در خود ذخیره کرده است ) ! سپس همین اطلاعات در CU کنترل شده و در پردازنده های قدیمی تر به R انتقال پیدا میکند و با توجه به اولویت برای پردازش های بعدی یا ذخیره به پل شمالی میرسد ! (فرض ما در مثال بالا پردازنده ای چند هسته ای اما با یک هسته روشن بود چون توضیح مولتی ترید این مثال خیلی سخت تر میشه)
اما همین اطلاعات خود به چه شکل هستند و چگونه ذخیره میشوند ؟!
اول از همه شما باید بدانید که زبان کامپیوتر به شکل binary یا دو دویی است ! یعنی فقط 0 و1 !
در صورتی که اعداد در حالت عادی بین 0 تا 9 هستند که به این حالت 10 -10 میگوییم !
نحوه تبدیل اعداد 10-10 به دو دویی را هم در دوران راهنمایی خوانده اید و من اشاره نمیکنم !
حال این اعداد باینری که کدهایی قابل فهم برای کامپیوتر هستند در قالب های مختلفی ذخیره میشوند !
کوچکترین آن ها بیت است ! بیت مثل یه کلید یک پل میمونه ! یا باز یا بسته ! یا 0 یا 1 ! (البته این وسط میشه قضیه کامپیوتر های کوانتومی – اسپینی و منطق فازی را یادآور شد ! به طور که بیت میتونه 0.5 هم باشه ! توضیح بیشتر اگر زنده بودیم باشه برای بعد !)
مفهوم دیگری به نام بایت هم وجود داره ! بایتی که از 8 بیت تشکیل میشه ! دقت داشته باشید که بایت کوچکترین واحد قابل آدرس دهی است ! یعنی دایرکتوری داره ! یک بایت میتونه یک عدد از صفر تا 255 را در خودش نگه داره ! یک بایت معادل فضایی است که یک کارکتر جا میگیره ! (توضیح کارکتر جلوتره !)
از اینجا به بعد مفاهیم و مقادیر اندازه گیری است که همه میدونیم مثل KB , MB , GB , TB , EB , PB و...
تعریف کلمه : بزرگترین واحدی که پروسسور در هر عملیات پردازش میکنه !
حالا مسئله اینجاست که توی کامپیوتر های 16 بیتی (قدیمی) هر دو بایت یک کلمه است !
حالا مسئله بعدی اینه که توی کامپیوتر های 32 بیتی (تقریبا جدید) هر چهار بایت یک کلمه است!
حالا مسئله آخر اینه که توی کامپیوتر های 64 بیتی (کاملا بروز) هر هشت بایت یک کلمه است !
یک کلمه میتواند عددی بین 0 تا 65536 باشه ! (یعنی 2 به توان 16 )
از سال 2005 به بعد مفهوم سیستم های 64 بیت به صورت گسترده وارد گردونه تولید قطعه و مصرف شد ! این استاندارد یعنی پردازش 8 بایتی کمک زیادی به پردازش های ریاضی میکنه ! یعنی به صورت کلی اطلاعات بیشتری در اختیار سیستم قرار میگیره تا در هر کلاک پردازش بیشتری انجام بده ! توجه داشته باشید هم پردازنده و هم مادربورد و هم نرم افزار باید از این مسئله پشتیبانی کنند !
حالا بر میگردیم به اصل سوال مقاله ! اطلاعات چگونه ذخیره میشند !
روی ابزاری مثل فلاپی یا زیپ دیسک ، صفحه ای مغناطیسی دایره ای شکل وجود داره ! اطلاعات در دوایر فرضی و هم مرکز نسبت به مرکز دیسکت ذخیره میشند ! به هر کدوم از این دایره های Track میگیم ! هر track به بخش هایی تقسیم میشه که بهشون Sector یا قطاع میگیم! به هر 512 تا سکتور هم کلاستر Cluster میگیم !
حالا وقتی دیسکت را درون Floppy drive قرار میدیم دو هد در دو طرف فلاپی قرار میگیرند و موتوری دیسک داخل دیسکت را میچرخاند تا سکتور های مختلف جلوی هد آمده و اطلاعات روی آن نوشته شود !
البته ما زمانی دو هد را داریم که دیسکت ما DS باشه ! یعنی دو رویه با چگالی 4 برابر باشد !
در هارد دیسک قضیه شباهت های زیادی دارد ! به این صورت که تفاوت اصلی حجم ، نحوه ذخیره سازی و سرعت اون هاست ! درون هارد سیلندر هایی وجود داره مثل دیسک های درون فلاپی ها است ! با این تفاوت که چگالی بسیار بالاتری دارد !
اینجا هم برای ذخیره سازی اطلاعات دیسک ها یا همون سیلندر ها با سرعتی بین 3600 تا 15000 دور میچرخند ! فاصله بین دیسک و هد در حد غبار و کمتر از 25 میلیونیم اینچ است !
بد سکتور سخت افزاری هم از همین فاصله نزدیک به وجود میاد ، یعنی هد به دیسک ها اتصال پیدا میکنه ! پس نباید حین کار هارد دیسک اقدام به جا به جایی کرد !
***
همانطور که گفتیم زبان کامپیوتر زبان دیجیتال است ، یعنی هر کارکتری باید به باینری تبدیل شود !
اگر به قضیه صفر و یک ها دوباره نگاه کنیم ، میتونیم 0 را همیشه به عنوان خاموش در نظر بگیریم و 1 را به عنوان روشن ! مثال :
0 : بارون نمیاد !
1: بارون میاد !
پس محاسبه گر شما الان فقط میتونه از چهار ترکیب استفاده کنه !
00
01
10
11
حالا اگر به همین مثال رطوبت هوا را هم اضافه کنیم !
000
001
010
011
100
101
110
111
حالا 8 ترکیب داریم ! احتمال هم شانس !
اعجاز پردازنده ها در همین جاست ! جایی که میلیون ها 0 و 1 باید کد و دیکد شوند !
اما یادمون نره همون طور که برای مغز ما تمام اعداد تعریف شده نیست و مثلا برای عملیات ضرب از دستور العمل خاص اون استفاده میکنیم برای یک پروسسور هم همه اعداد تعریف شده نیست و از دستور العمل هایی که در کش L1 وجود دارد برای انجام محاسبات استفاده میکند !
در مثال بالا واقعیت بارانی بودن به عنوان تابعی برای سیستم تعریف شده و با 0 و 1 از احقاق این امر اطلاع میافتیم ! اما خود تابع بارانی بودن همیشه تعریف شده نیست و بر فرض این که کامپیوتر به ما خروجی بارانی بودن هوا را بده نیاز به انجام پروسه ای مثل این دارد : 0000101110101000
هر چقدر احتمالات و این سوئیچ های 0 و1 ما بیشتر باشه تعداد پراسس های قابل انجام بیشتر است !
1 سوئیچ : 2 احتمال
2 سوئیچ : 4 احتمال
3 سوئیچ : 8 احتمال
4 سوئیچ : 16 احتمال
5 سوئیچ : 32 احتمال
6 سوئیچ : 64 احتمال
حالا این وسط تکلیف چیه ؟ بشینیم به زبان اسمبلی صحبت کنیم ؟
خیر ، گروهی از شرکت ها و متخصصین استانداردی را با نام ASCII به وجود آوردند !
استانداردی که در خود اصطلاحا 8 سوئیچ را جا داده که یکی از آنها وظیفه Error Checking را دارد ! (عملا 7 + 1 سوئیچ )
آشنا نیست ؟ همین 8 سوئیچ را میگویم ! بله یک سوئیچ همان یک بیت و 8 بیت یک بایت هستند !
بله اینگونه شد که به جای آن که اسمبلی صحبت کنیم مثلا عدد 345663 را در کامپیوتر به صورت باینری وارد کنیم استاندارد asc2 اینکار را برای ما انجام میدهد ! (345663 = 001100101101001001101011101010111000110)
Decimal
Hex
ASCII
EBCDIC
Binary
0
0
NUL
NUL
0000 0000
1
1
SOH
SOH
0000 0001
2
2
STX
STX
0000 0010
3
3
ETX
ETX
0000 0011
4
4
EOT
SEL
0000 0100
5
5
ENQ
HT
0000 0101
6
6
ACK
RNL
0000 0110
7
7
BEL
DEL
0000 0111
8
8
BS
GE
0000 1000
9
9
TAB
SPS
0000 1001
10
A
LF
RPT
0000 1010
11
B
VT
VT
0000 1011
12
C
FF
FF
0000 1100
13
D
CR
CR
0000 1101
14
E
SO
SO
0000 1110
15
F
SI
SI
0000 1111
16
10
DLE
DLE
0001 0000
17
11
DC1
DC1
0001 0001
18
12
DC2
DC2
0001 0010
19
13
DC3
DC3
0001 0011
20
14
DC4
RES/ENP
0001 0100
21
15
NAK
NL
0001 0101
22
16
SYN
BS
0001 0110
23
17
ETB
POC
0001 0111
24
18
CAN
CAN
0001 1000
25
19
EM
EM
0001 1001
26
1A
SUB
UBS
0001 1010
27
1B
ESC
CU1
0001 1011
28
1C
FS
IFS
0001 1100
29
1D
GS
IGS
0001 1101
30
1E
RS
IRS
0001 1110
31
1F
US
ITB/IUS
0001 1111
32
20
DS
0010 0000
33
21
!
SOS
0010 0001
34
22
"
FS
0010 0010
35
23
#
WUS
0010 0011
36
24
$
BYP/INP
0010 0100
37
25
%
LF
0010 0101
38
26
&
ETB
0010 0110
39
27
'
ESC
0010 0111
40
28
(
SA
0010 1000
41
29
)
SFE
0010 1001
42
2A
*
SM/SW
0010 1010
43
2B
+
CSP
0010 1011
44
2C
,
MFA
0010 1100
45
2D
-
ENQ
0010 1101
46
2E
.
ACK
0010 1110
47
2F
/
BEL
0010 1111
48
30
0
0011 0000
49
31
1
0011 0001
50
32
2
SYN
0011 0010
51
33
3
IR
0011 0011
52
34
4
PP
0011 0100
53
35
5
TRN
0011 0101
54
36
6
NBS
0011 0110
55
37
7
EOT
0011 0111
56
38
8
SBS
0011 1000
57
39
9
IT
0011 1001
58
3A
:
RFF
0011 1010
59
3B
;
CU3
0011 1011
60
3C
<
DC4
0011 1100
61
3D
=
NAK
0011 1101
62
3E
>
0011 1110
63
3F
?
SUB
0011 1111
64
40
@
SP
0100 0000
65
41
A
RSP
0100 0001
66
42
B
0100 0010
67
43
C
0100 0011
68
44
D
0100 0100
69
45
E
0100 0101
70
46
F
0100 0110
71
47
G
0100 0111
72
48
H
0100 1000
73
49
I
0100 1001
74
4A
J
0100 1010
75
4B
K
.
0100 1011
76
4C
L
<
0100 1100
77
4D
M
(
0100 1101
78
4E
N
+
0100 1110
79
4F
O
|
0100 1111
80
50
P
&
0101 0000
81
51
Q
0101 0001
82
52
R
0101 0010
83
53
S
0101 0011
84
54
T
0101 0100
85
55
U
0101 0101
86
56
V
0101 0110
87
57
W
0101 0111
88
58
X
0101 1000
89
59
Y
0101 1001
90
5A
Z
!
0101 1010
91
5B
[
$
0101 1011
92
5C
\
*
0101 1100
93
5D
]
)
0101 1101
94
5E
^
;
0101 1110
95
5F
_
0101 1111
96
60
`
_
0110 0000
97
61
a
/
0110 0001
98
62
b
0110 0010
99
63
c
0110 0011
100
64
d
0110 0100
101
65
e
0110 0101
102
66
f
0110 0110
103
67
g
0110 0111
104
68
h
0110 1000
105
69
i
0110 1001
106
6A
j
|
0110 1010
107
6B
k
,
0110 1011
108
6C
l
%
0110 1100
109
6D
m
_
0110 1101
110
6E
n
>
0110 1110
111
6F
o
?
0110 1111
112
70
p
0111 0000
113
71
q
0111 0001
114
72
r
0111 0010
115
73
s
0111 0011
116
74
t
0111 0100
117
75
u
0111 0101
118
76
v
0111 0110
119
77
w
0111 0111
120
78
x
0111 1000
121
79
y
`
0111 1001
122
7A
z
:
0111 1010
123
7B
{
#
0111 1011
124
7C
|
@
0111 1100
125
7D
}
'
0111 1101
126
7E
~
=
0111 1110
127
7F
DEL
"
0111 1111
128
80
1000 0000
129
81
a
1000 0001
130
82
b
1000 0010
131
83
c
1000 0011
132
84
d
1000 0100
133
85
e
1000 0101
134
86
f
1000 0110
135
87
g
1000 0111
136
88
h
1000 1000
137
89
i
1000 1001
138
8A
1000 1010
139
8B
{
1000 1011
140
8C
1000 1100
141
8D
1000 1101
142
8E
1000 1110
143
8F
+
1000 1111
144
90
1001 0000
145
91
j
1001 0001
146
92
k
1001 0010
147
93
l
1001 0011
148
94
m
1001 0100
149
95
n
1001 0101
150
96
o
1001 0110
151
97
p
1001 0111
152
98
q
1001 1000
153
99
r
1001 1001
154
9A
1001 1010
155
9B
}
1001 1011
156
9C
1001 1100
157
9D
1001 1101
158
9E
1001 1110
159
9F
1001 1111
160
A0
1010 0000
161
A1
1010 0001
162
A2
s
1010 0010
163
A3
t
1010 0011
164
A4
u
1010 0100
165
A5
v
1010 0101
166
A6
w
1010 0110
167
A7
x
1010 0111
168
A8
y
1010 1000
169
A9
z
1010 1001
170
AA
1010 1010
171
AB
1010 1011
172
AC
1010 1100
173
AD
[
1010 1101
174
AE
1010 1110
175
AF
1010 1111
176
B0
1011 0000
177
B1
1011 0001
178
B2
1011 0010
179
B3
1011 0011
180
B4
1011 0100
181
B5
1011 0101
182
B6
1011 0110
183
B7
1011 0111
184
B8
1011 1000
185
B9
1011 1001
186
BA
1011 1010
187
BB
1011 1011
188
BC
1011 1100
189
BD
1011 1101
190
BE
1011 1110
191
BF
1011 1111
192
C0
1100 0000
193
C1
A
1100 0001
194
C2
B
1100 0010
195
C3
C
1100 0011
196
C4
D
1100 0100
197
C5
E
1100 0101
198
C6
F
1100 0110
199
C7
G
1100 0111
200
C8
H
1100 1000
201
C9
I
1100 1001
202
CA
1100 1010
203
CB
1100 1011
204
CC
1100 1100
205
CD
1100 1101
206
CE
1100 1110
207
CF
1100 1111
208
D0
1101 0000
209
D1
J
1101 0001
210
D2
K
1101 0010
211
D3
L
1101 0011
212
D4
M
1101 0100
213
D5
N
1101 0101
214
D6
O
1101 0110
215
D7
P
1101 0111
216
D8
Q
1101 1000
217
D9
R
1101 1001
218
DA
1101 1010
219
DB
1101 1011
220
DC
1101 1100
221
DD
1101 1101
222
DE
1101 1110
223
DF
1101 1111
224
E0
1110 0000
225
E1
1110 0001
226
E2
S
1110 0010
227
E3
T
1110 0011
228
E4
U
1110 0100
229
E5
V
1110 0101
230
E6
W
1110 0110
231
E7
X
1110 0111
232
E8
Y
1110 1000
233
E9
Z
1110 1001
234
EA
1110 1010
235
EB
1110 1011
236
EC
1110 1100
237
ED
1110 1101
238
EE
1110 1110
239
EF
1110 1111
240
F0
0
1111 0000
241
F1
1
1111 0001
242
F2
2
1111 0010
243
F3
3
1111 0011
244
F4
4
1111 0100
245
F5
5
1111 0101
246
F6
6
1111 0110
247
F7
7
1111 0111
248
F8
8
1111 1000
249
F9
9
1111 1001
250
FA
1111 1010
251
FB
1111 1011
252
FC
1111 1100
253
FD
1111 1101
254
FE
1111 1110
255
FF
1111 1111
این اطلاعات که بگونه های مختلف کد و دیکد شدند و ما فهمیدیم که این عمل چگونه انجام شده ، چگونه ذخیره میشوند ؟؟؟ (خلاصه میگیم)
در هارد دیسک مکانیکی اطلاعات به صورت مغناطیسی به صورت صفر و یک بر روی پلاتر ها توسط لنز هارد نوشته یا خوانده میشوند !
در رم اطلاعات به صورت الکترونیکی در بلاک های مشخص با توجه به gaged یا ungagged بودن نوشته میشود !
در لوح های فشرده ، صفحه فلزی (جنس پلی کربنات) روی دیسک با پرتوهای لیزری که بهش تابانده میشه واکنش میده و حفره های میکروسکوپی درونش به وجود میاد که نمادی از 0 و1 هستند !
اطلاعات و سیستم عامل چگونه مرتبط هستند ؟ نحوه ذخیره سازی داده ها به صورت نرم افزاری چگونه انجام میپذیرد ؟؟
سیستم عامل های امروزی از طریق Logical Block Addressing (آدرس دهی بلاک منطقی) یا به اختصار LBA با هارددیسکها ارتباط برقرار می کنند. وقتی شما فایلی را ذخیره می کنید، ویندوز خیلی ساده یک دستور نوشتن را برای فایل شما در یک LBA خاص صادر می کند، مثل LBA 15 .
همانطور که اول مقاله گفتم در صورتی که سعادتش را داشته باشم مقاله های آموزشی به این شکل را ادامه خواهم داد ! احتمال زیاد هم در صورت نظر مثبت شما عزیزان قالب و ساختار نوشته ها نیاز مثل امروز ، محاوره ای خواهد بود ! (برای فهم بهتر)
با تشکر - علیرضا سجای نیا !!!
این دفعه با بررسی یک قطعه طرف نیستیم ! خب طبیعی هم هست چون نه کسی توان خرید داره و نه من قطعه جدیدی به دستم رسیده است !
پس بهتره بریم سراغ یه مبحث کم خرج تر و کمی قضیه را آموزشی کنیم تا بهتر قدر قطعاتمون را بدونیم و دعا دعا کنیم که یه وقت نسوزند که دیگه قطعه خریدن کار هر کس نیست !
البته به شدت توصیه میکنم مقاله را بخونید چون برای اکثر ما یک نکته آموزشی که قبلا نمیدونستید داره !
***
همه ما با حافظه های اصلی و فرعی آشنا هستیم ، همیشه هم در قسمت های مختلف فروم به معرفی انواع اونها ، نحوه کارکرد ، جدیدترین مدل ها و... پرداختیم ! از بخش "حافظه اصلی (Ram) " گرفته تا بخش پر و پیمان "حافظه های جانبی" !
اما تا حالا از خودتون پرسیدید که این اطلاعات چگونه و با چه روشی روی ابزار های ما قرار میگیرند ؟
رم چه جوری پر میشه ؟ اطلاعاتی که ما معتقدیم به صورت راندوم روی اون قرار میگیره از کجا میاد ؟ بلاک های دیتا چه سایزی دارند ؟ چقدر ظرفیت دارند ؟ بیت ها و بایت ها چه نظمی دارند ؟ و...
خب مهم نیست که سوال های بالا را از خودتون پرسیدید یا نه ! چون ما هم قصد جواب دادن به همه اونها ها را نداریم !
لااقل همه اونها در حوصله این مقاله نمیگنجه ! فعلا مطالب را به صورت کلی میگیم ! چون قراره سری مقالاتی با مفهوم آموزش تئوری کامپیوتر در فروم سخت افزار داشته باشیم !
میخوایم به صورت کلی بررسی کنیم که اطلاعات چگونه روی کامپیوتر ذخیره میشه !
خب ، طبق عادت مألوف از بیسیک ترین جای ممکن شروع میکنیم !
****
همانطور که همه ما میدونیم حافظه مکانی برای ذخیره سازی اطلاعات است ، که به صورت دائم یا موقت اطلاعات درون آنها ذخیره میشوند ! دقیقا همان نقشی که ما در مغز انسان به حافظه موقت و حافظه طولانی مدت نسبت میدهیم !
وظیفه حافظه اصلی در دسترس قرار دادن اطلاعات و دستور العمل هایی است که به صورت کش شده از هارد به عنوان واسط مهیا میشود ! بدین صورت که اطلاعات ضروری + اطلاعات نرم افزار ها به صورت راندوم بر روی رم طبقه بندی شده و آماده انتقال به کش L3 در پردازنده های جدید میشود !
حال اینکه تعاریفی مثل نسل مموری ، زمان تاخیر ، باس و... در همین مرحله یعنی انتقال اطلاعات رم معنا پیدا میکنند و تفاوت های خود را محقق میسازند !
بگذارید مثالی بزنم : فرض کنید برنامه ای را اجرا میکنید که وظیفه آن جمع چند عدد است ! برنامه از هارد بر روی رم بارگذاری میشود ، اطلاعات نرم افزار بر روی کش L3 پردازنده قرار میگرند بخش ALU با استفاده از دستور العمل های از پیش آماده خود در کش L1 شروع به پردازش میکند ! (همانطور که میدانید ظرفیت کش L1 به عنوان سریعترین کش ، بسیار محدود و در حدی کمتر از 128 کیلوبایت است که دستور العمل ها و نحوه پردازش را در خود ذخیره کرده است ) ! سپس همین اطلاعات در CU کنترل شده و در پردازنده های قدیمی تر به R انتقال پیدا میکند و با توجه به اولویت برای پردازش های بعدی یا ذخیره به پل شمالی میرسد ! (فرض ما در مثال بالا پردازنده ای چند هسته ای اما با یک هسته روشن بود چون توضیح مولتی ترید این مثال خیلی سخت تر میشه)
اما همین اطلاعات خود به چه شکل هستند و چگونه ذخیره میشوند ؟!
اول از همه شما باید بدانید که زبان کامپیوتر به شکل binary یا دو دویی است ! یعنی فقط 0 و1 !
در صورتی که اعداد در حالت عادی بین 0 تا 9 هستند که به این حالت 10 -10 میگوییم !
نحوه تبدیل اعداد 10-10 به دو دویی را هم در دوران راهنمایی خوانده اید و من اشاره نمیکنم !
حال این اعداد باینری که کدهایی قابل فهم برای کامپیوتر هستند در قالب های مختلفی ذخیره میشوند !
کوچکترین آن ها بیت است ! بیت مثل یه کلید یک پل میمونه ! یا باز یا بسته ! یا 0 یا 1 ! (البته این وسط میشه قضیه کامپیوتر های کوانتومی – اسپینی و منطق فازی را یادآور شد ! به طور که بیت میتونه 0.5 هم باشه ! توضیح بیشتر اگر زنده بودیم باشه برای بعد !)
مفهوم دیگری به نام بایت هم وجود داره ! بایتی که از 8 بیت تشکیل میشه ! دقت داشته باشید که بایت کوچکترین واحد قابل آدرس دهی است ! یعنی دایرکتوری داره ! یک بایت میتونه یک عدد از صفر تا 255 را در خودش نگه داره ! یک بایت معادل فضایی است که یک کارکتر جا میگیره ! (توضیح کارکتر جلوتره !)
از اینجا به بعد مفاهیم و مقادیر اندازه گیری است که همه میدونیم مثل KB , MB , GB , TB , EB , PB و...
تعریف کلمه : بزرگترین واحدی که پروسسور در هر عملیات پردازش میکنه !
حالا مسئله اینجاست که توی کامپیوتر های 16 بیتی (قدیمی) هر دو بایت یک کلمه است !
حالا مسئله بعدی اینه که توی کامپیوتر های 32 بیتی (تقریبا جدید) هر چهار بایت یک کلمه است!
حالا مسئله آخر اینه که توی کامپیوتر های 64 بیتی (کاملا بروز) هر هشت بایت یک کلمه است !
یک کلمه میتواند عددی بین 0 تا 65536 باشه ! (یعنی 2 به توان 16 )
از سال 2005 به بعد مفهوم سیستم های 64 بیت به صورت گسترده وارد گردونه تولید قطعه و مصرف شد ! این استاندارد یعنی پردازش 8 بایتی کمک زیادی به پردازش های ریاضی میکنه ! یعنی به صورت کلی اطلاعات بیشتری در اختیار سیستم قرار میگیره تا در هر کلاک پردازش بیشتری انجام بده ! توجه داشته باشید هم پردازنده و هم مادربورد و هم نرم افزار باید از این مسئله پشتیبانی کنند !
حالا بر میگردیم به اصل سوال مقاله ! اطلاعات چگونه ذخیره میشند !
روی ابزاری مثل فلاپی یا زیپ دیسک ، صفحه ای مغناطیسی دایره ای شکل وجود داره ! اطلاعات در دوایر فرضی و هم مرکز نسبت به مرکز دیسکت ذخیره میشند ! به هر کدوم از این دایره های Track میگیم ! هر track به بخش هایی تقسیم میشه که بهشون Sector یا قطاع میگیم! به هر 512 تا سکتور هم کلاستر Cluster میگیم !
حالا وقتی دیسکت را درون Floppy drive قرار میدیم دو هد در دو طرف فلاپی قرار میگیرند و موتوری دیسک داخل دیسکت را میچرخاند تا سکتور های مختلف جلوی هد آمده و اطلاعات روی آن نوشته شود !
البته ما زمانی دو هد را داریم که دیسکت ما DS باشه ! یعنی دو رویه با چگالی 4 برابر باشد !
در هارد دیسک قضیه شباهت های زیادی دارد ! به این صورت که تفاوت اصلی حجم ، نحوه ذخیره سازی و سرعت اون هاست ! درون هارد سیلندر هایی وجود داره مثل دیسک های درون فلاپی ها است ! با این تفاوت که چگالی بسیار بالاتری دارد !
اینجا هم برای ذخیره سازی اطلاعات دیسک ها یا همون سیلندر ها با سرعتی بین 3600 تا 15000 دور میچرخند ! فاصله بین دیسک و هد در حد غبار و کمتر از 25 میلیونیم اینچ است !
بد سکتور سخت افزاری هم از همین فاصله نزدیک به وجود میاد ، یعنی هد به دیسک ها اتصال پیدا میکنه ! پس نباید حین کار هارد دیسک اقدام به جا به جایی کرد !
***
همانطور که گفتیم زبان کامپیوتر زبان دیجیتال است ، یعنی هر کارکتری باید به باینری تبدیل شود !
اگر به قضیه صفر و یک ها دوباره نگاه کنیم ، میتونیم 0 را همیشه به عنوان خاموش در نظر بگیریم و 1 را به عنوان روشن ! مثال :
0 : بارون نمیاد !
1: بارون میاد !
پس محاسبه گر شما الان فقط میتونه از چهار ترکیب استفاده کنه !
00
01
10
11
حالا اگر به همین مثال رطوبت هوا را هم اضافه کنیم !
000
001
010
011
100
101
110
111
حالا 8 ترکیب داریم ! احتمال هم شانس !
اعجاز پردازنده ها در همین جاست ! جایی که میلیون ها 0 و 1 باید کد و دیکد شوند !
اما یادمون نره همون طور که برای مغز ما تمام اعداد تعریف شده نیست و مثلا برای عملیات ضرب از دستور العمل خاص اون استفاده میکنیم برای یک پروسسور هم همه اعداد تعریف شده نیست و از دستور العمل هایی که در کش L1 وجود دارد برای انجام محاسبات استفاده میکند !
در مثال بالا واقعیت بارانی بودن به عنوان تابعی برای سیستم تعریف شده و با 0 و 1 از احقاق این امر اطلاع میافتیم ! اما خود تابع بارانی بودن همیشه تعریف شده نیست و بر فرض این که کامپیوتر به ما خروجی بارانی بودن هوا را بده نیاز به انجام پروسه ای مثل این دارد : 0000101110101000
هر چقدر احتمالات و این سوئیچ های 0 و1 ما بیشتر باشه تعداد پراسس های قابل انجام بیشتر است !
1 سوئیچ : 2 احتمال
2 سوئیچ : 4 احتمال
3 سوئیچ : 8 احتمال
4 سوئیچ : 16 احتمال
5 سوئیچ : 32 احتمال
6 سوئیچ : 64 احتمال
حالا این وسط تکلیف چیه ؟ بشینیم به زبان اسمبلی صحبت کنیم ؟
خیر ، گروهی از شرکت ها و متخصصین استانداردی را با نام ASCII به وجود آوردند !
استانداردی که در خود اصطلاحا 8 سوئیچ را جا داده که یکی از آنها وظیفه Error Checking را دارد ! (عملا 7 + 1 سوئیچ )
آشنا نیست ؟ همین 8 سوئیچ را میگویم ! بله یک سوئیچ همان یک بیت و 8 بیت یک بایت هستند !
بله اینگونه شد که به جای آن که اسمبلی صحبت کنیم مثلا عدد 345663 را در کامپیوتر به صورت باینری وارد کنیم استاندارد asc2 اینکار را برای ما انجام میدهد ! (345663 = 001100101101001001101011101010111000110)
Decimal
Hex
ASCII
EBCDIC
Binary
0
0
NUL
NUL
0000 0000
1
1
SOH
SOH
0000 0001
2
2
STX
STX
0000 0010
3
3
ETX
ETX
0000 0011
4
4
EOT
SEL
0000 0100
5
5
ENQ
HT
0000 0101
6
6
ACK
RNL
0000 0110
7
7
BEL
DEL
0000 0111
8
8
BS
GE
0000 1000
9
9
TAB
SPS
0000 1001
10
A
LF
RPT
0000 1010
11
B
VT
VT
0000 1011
12
C
FF
FF
0000 1100
13
D
CR
CR
0000 1101
14
E
SO
SO
0000 1110
15
F
SI
SI
0000 1111
16
10
DLE
DLE
0001 0000
17
11
DC1
DC1
0001 0001
18
12
DC2
DC2
0001 0010
19
13
DC3
DC3
0001 0011
20
14
DC4
RES/ENP
0001 0100
21
15
NAK
NL
0001 0101
22
16
SYN
BS
0001 0110
23
17
ETB
POC
0001 0111
24
18
CAN
CAN
0001 1000
25
19
EM
EM
0001 1001
26
1A
SUB
UBS
0001 1010
27
1B
ESC
CU1
0001 1011
28
1C
FS
IFS
0001 1100
29
1D
GS
IGS
0001 1101
30
1E
RS
IRS
0001 1110
31
1F
US
ITB/IUS
0001 1111
32
20
DS
0010 0000
33
21
!
SOS
0010 0001
34
22
"
FS
0010 0010
35
23
#
WUS
0010 0011
36
24
$
BYP/INP
0010 0100
37
25
%
LF
0010 0101
38
26
&
ETB
0010 0110
39
27
'
ESC
0010 0111
40
28
(
SA
0010 1000
41
29
)
SFE
0010 1001
42
2A
*
SM/SW
0010 1010
43
2B
+
CSP
0010 1011
44
2C
,
MFA
0010 1100
45
2D
-
ENQ
0010 1101
46
2E
.
ACK
0010 1110
47
2F
/
BEL
0010 1111
48
30
0
0011 0000
49
31
1
0011 0001
50
32
2
SYN
0011 0010
51
33
3
IR
0011 0011
52
34
4
PP
0011 0100
53
35
5
TRN
0011 0101
54
36
6
NBS
0011 0110
55
37
7
EOT
0011 0111
56
38
8
SBS
0011 1000
57
39
9
IT
0011 1001
58
3A
:
RFF
0011 1010
59
3B
;
CU3
0011 1011
60
3C
<
DC4
0011 1100
61
3D
=
NAK
0011 1101
62
3E
>
0011 1110
63
3F
?
SUB
0011 1111
64
40
@
SP
0100 0000
65
41
A
RSP
0100 0001
66
42
B
0100 0010
67
43
C
0100 0011
68
44
D
0100 0100
69
45
E
0100 0101
70
46
F
0100 0110
71
47
G
0100 0111
72
48
H
0100 1000
73
49
I
0100 1001
74
4A
J
0100 1010
75
4B
K
.
0100 1011
76
4C
L
<
0100 1100
77
4D
M
(
0100 1101
78
4E
N
+
0100 1110
79
4F
O
|
0100 1111
80
50
P
&
0101 0000
81
51
Q
0101 0001
82
52
R
0101 0010
83
53
S
0101 0011
84
54
T
0101 0100
85
55
U
0101 0101
86
56
V
0101 0110
87
57
W
0101 0111
88
58
X
0101 1000
89
59
Y
0101 1001
90
5A
Z
!
0101 1010
91
5B
[
$
0101 1011
92
5C
\
*
0101 1100
93
5D
]
)
0101 1101
94
5E
^
;
0101 1110
95
5F
_
0101 1111
96
60
`
_
0110 0000
97
61
a
/
0110 0001
98
62
b
0110 0010
99
63
c
0110 0011
100
64
d
0110 0100
101
65
e
0110 0101
102
66
f
0110 0110
103
67
g
0110 0111
104
68
h
0110 1000
105
69
i
0110 1001
106
6A
j
|
0110 1010
107
6B
k
,
0110 1011
108
6C
l
%
0110 1100
109
6D
m
_
0110 1101
110
6E
n
>
0110 1110
111
6F
o
?
0110 1111
112
70
p
0111 0000
113
71
q
0111 0001
114
72
r
0111 0010
115
73
s
0111 0011
116
74
t
0111 0100
117
75
u
0111 0101
118
76
v
0111 0110
119
77
w
0111 0111
120
78
x
0111 1000
121
79
y
`
0111 1001
122
7A
z
:
0111 1010
123
7B
{
#
0111 1011
124
7C
|
@
0111 1100
125
7D
}
'
0111 1101
126
7E
~
=
0111 1110
127
7F
DEL
"
0111 1111
128
80
1000 0000
129
81
a
1000 0001
130
82
b
1000 0010
131
83
c
1000 0011
132
84
d
1000 0100
133
85
e
1000 0101
134
86
f
1000 0110
135
87
g
1000 0111
136
88
h
1000 1000
137
89
i
1000 1001
138
8A
1000 1010
139
8B
{
1000 1011
140
8C
1000 1100
141
8D
1000 1101
142
8E
1000 1110
143
8F
+
1000 1111
144
90
1001 0000
145
91
j
1001 0001
146
92
k
1001 0010
147
93
l
1001 0011
148
94
m
1001 0100
149
95
n
1001 0101
150
96
o
1001 0110
151
97
p
1001 0111
152
98
q
1001 1000
153
99
r
1001 1001
154
9A
1001 1010
155
9B
}
1001 1011
156
9C
1001 1100
157
9D
1001 1101
158
9E
1001 1110
159
9F
1001 1111
160
A0
1010 0000
161
A1
1010 0001
162
A2
s
1010 0010
163
A3
t
1010 0011
164
A4
u
1010 0100
165
A5
v
1010 0101
166
A6
w
1010 0110
167
A7
x
1010 0111
168
A8
y
1010 1000
169
A9
z
1010 1001
170
AA
1010 1010
171
AB
1010 1011
172
AC
1010 1100
173
AD
[
1010 1101
174
AE
1010 1110
175
AF
1010 1111
176
B0
1011 0000
177
B1
1011 0001
178
B2
1011 0010
179
B3
1011 0011
180
B4
1011 0100
181
B5
1011 0101
182
B6
1011 0110
183
B7
1011 0111
184
B8
1011 1000
185
B9
1011 1001
186
BA
1011 1010
187
BB
1011 1011
188
BC
1011 1100
189
BD
1011 1101
190
BE
1011 1110
191
BF
1011 1111
192
C0
1100 0000
193
C1
A
1100 0001
194
C2
B
1100 0010
195
C3
C
1100 0011
196
C4
D
1100 0100
197
C5
E
1100 0101
198
C6
F
1100 0110
199
C7
G
1100 0111
200
C8
H
1100 1000
201
C9
I
1100 1001
202
CA
1100 1010
203
CB
1100 1011
204
CC
1100 1100
205
CD
1100 1101
206
CE
1100 1110
207
CF
1100 1111
208
D0
1101 0000
209
D1
J
1101 0001
210
D2
K
1101 0010
211
D3
L
1101 0011
212
D4
M
1101 0100
213
D5
N
1101 0101
214
D6
O
1101 0110
215
D7
P
1101 0111
216
D8
Q
1101 1000
217
D9
R
1101 1001
218
DA
1101 1010
219
DB
1101 1011
220
DC
1101 1100
221
DD
1101 1101
222
DE
1101 1110
223
DF
1101 1111
224
E0
1110 0000
225
E1
1110 0001
226
E2
S
1110 0010
227
E3
T
1110 0011
228
E4
U
1110 0100
229
E5
V
1110 0101
230
E6
W
1110 0110
231
E7
X
1110 0111
232
E8
Y
1110 1000
233
E9
Z
1110 1001
234
EA
1110 1010
235
EB
1110 1011
236
EC
1110 1100
237
ED
1110 1101
238
EE
1110 1110
239
EF
1110 1111
240
F0
0
1111 0000
241
F1
1
1111 0001
242
F2
2
1111 0010
243
F3
3
1111 0011
244
F4
4
1111 0100
245
F5
5
1111 0101
246
F6
6
1111 0110
247
F7
7
1111 0111
248
F8
8
1111 1000
249
F9
9
1111 1001
250
FA
1111 1010
251
FB
1111 1011
252
FC
1111 1100
253
FD
1111 1101
254
FE
1111 1110
255
FF
1111 1111
این اطلاعات که بگونه های مختلف کد و دیکد شدند و ما فهمیدیم که این عمل چگونه انجام شده ، چگونه ذخیره میشوند ؟؟؟ (خلاصه میگیم)
در هارد دیسک مکانیکی اطلاعات به صورت مغناطیسی به صورت صفر و یک بر روی پلاتر ها توسط لنز هارد نوشته یا خوانده میشوند !
در رم اطلاعات به صورت الکترونیکی در بلاک های مشخص با توجه به gaged یا ungagged بودن نوشته میشود !
در لوح های فشرده ، صفحه فلزی (جنس پلی کربنات) روی دیسک با پرتوهای لیزری که بهش تابانده میشه واکنش میده و حفره های میکروسکوپی درونش به وجود میاد که نمادی از 0 و1 هستند !
اطلاعات و سیستم عامل چگونه مرتبط هستند ؟ نحوه ذخیره سازی داده ها به صورت نرم افزاری چگونه انجام میپذیرد ؟؟
سیستم عامل های امروزی از طریق Logical Block Addressing (آدرس دهی بلاک منطقی) یا به اختصار LBA با هارددیسکها ارتباط برقرار می کنند. وقتی شما فایلی را ذخیره می کنید، ویندوز خیلی ساده یک دستور نوشتن را برای فایل شما در یک LBA خاص صادر می کند، مثل LBA 15 .
همانطور که اول مقاله گفتم در صورتی که سعادتش را داشته باشم مقاله های آموزشی به این شکل را ادامه خواهم داد ! احتمال زیاد هم در صورت نظر مثبت شما عزیزان قالب و ساختار نوشته ها نیاز مثل امروز ، محاوره ای خواهد بود ! (برای فهم بهتر)
با تشکر - علیرضا سجای نیا !!!