Автор: Пользователь скрыл имя, 10 Марта 2012 в 20:04, курсовая работа
Данная курсовая работа по дисциплине Операционные системы. Основная часть курсовой работы включает в себя два раздела. Тема первого раздела - «Память ПК в операционной системе DOS». Целью данного раздела является исследование и наиболее полное раскрытие темы, изучение видов памяти и типов памяти в DOS
Второй радел курсовой работы посвящается написанию поставленных задач на языке программирования С++. Целью данного раздела является, нахождение наиболее простых приемов и функций для их написания, а также приобретение навыков по построению алгоритмов и блок-схем Си-программ.
ВВЕДЕНИЕ
Теоретическая часть
MS-DOS
Ограничения DOS
Простота DOS
Состав и общая схема работы MS-DOS
Система управления памятью
Память ПК
Назначение памяти
Классификация видов памяти
Типы устройств памяти в зависимости от возможности записи и перезаписи данных
Виды памяти, различаемые по признаку зависимости сохранения записи при снятии электропитания
Различия видов памяти по виду физического носителя и способа записи данных
По назначению, организации памяти и/или доступа к ней
Память ПК в DOS
Оперативная память
Организация памяти.
Модернизация памяти
Типы памяти
Обычная память
Расширенная память
Дополнительная память
Верхняя память
Загрузка DOS в старшую память
Заключение
ЗАДАЧА №1
Постановка задачи №1
Блок-схема задачи №1
Разработка алгоритма и программы
Исходный текст программы
Результаты вычислений
ЗАДАЧА №2
Постановка задачи №2
Блок-схема
Разработка алгоритма и программы
Исходный текст программы
Результаты вычислений
Заключение
Литература
ROM -это память, допускающая только считывание. Доступ к ней осуществляется так же, как и к RAM, но запись в эту память производить нельзя. Она хранит информацию постоянно, поэтому информация может только считываться. Содержимое ROM не потеряется при выключенном питании. В компьютерах ROM используется в различных целях. Система BIOS персонального компьютера (ПК) хранится в микросхеме ROM. Кроме ограничения в 1 Мб используемой в персональном компьютере оперативной памяти RAM при работе с DOS мы должны знать, что память в ПК является непрерывной.
DOS признает четыре различных типа памяти: обычная, верхняя, расширенная и дополнительная память. Первые три типа различаются только своим расположением на карте памяти ПЭВМ. Четвертый тип памяти - это дополнительная память, которая называется также LIM-EMS-памятью или просто EMS-памятью и лежит вне адресного пространства микропроцессора.
Обычная память - это область объемом 640К, в которую загружаются DOS и прикладные программы. Она простирается от начала памяти до отметки 640К. Если на ПК установлено ОЗУ объемом менее 640К, обычная память располагается только до его верхней границы. Например, в компьютерах с памятью объемом 512К она простирается только от 0 до 512К. Узнать, какой объем обычной памяти имеет ваша система, можно, введя МЕМ в командной строке DOS. Этот объем будет изменяться в зависимости от того, как выглядят файлы AUTOEXEC.BAT и CONFIG.SYS. Важнейший шаг, который можно сделать, чтобы предоставить программам больше пространство, заключается во включении в AUTOEXEC.BAT и CONFIG.SYS команд, увеличивающих наибольший размер выполняемой программы, о котором сообщает МЕМ. Можно больше узнать об использовании обычной памяти с помощью ключа /P команды МЕМ. Блок окружения - область памяти, в которой хранятся строки, созданные командами SET, PATH и PROMPT. DOS обеспечивает блок окружения, содержащий копию этих строк для каждой загружаемой и выполняемой программы. Можно извлечь еще больше информации из этого листинга обычной памяти.
Расширенная память - это память, которая лежит выше отметки 1М. Расширенная память в некоторой степени не так полезна, как обычная, потому что DOS просто не может ее использовать так же, как она использует обычную память. Расширенную память могут использовать драйверы, поставляемые с DOS 5 (RAMDrive и SMARTDrive) . Для работы с расширенной памятью эти программы либо переключаются на время в защитный режим, копируют данные в расширенную память или из нее и медленно переключаются обратно в обычный режим, либо полагаются на особенности микропроцессора, позволяющие им достигнуть расширенной памяти, оставаясь в обычном режиме. Некоторые прикладные программы также будут использовать расширенную память, и при ее преобразовании в дополнительную можно заставить программы, которые используют дополнительную память, а не расширенную память, все же косвенно ее использовать. В версии 5 большая часть самой DOS может быть загружена в расширенную память, освобождая дополнительный объем обычной память для прикладных программ.
DOS 5 поступает пользователю вместе со специальным драйвером устройства, называемым HIMEM.SYS, который призван управлять расширенной памятью. HIMEM.SIS управляет потоками данных для всей памяти объемом 640К, включая область верхней памяти.
Нехватка памяти была впервые отмечена пользователями электронных таблиц. Для электронных таблиц требуется большой объем обычной памяти, а стандартная память DOS не может удовлетворить эту потребность. Поэтому была разработана спецификация дополнительной памяти или EMS. EMS определяет дополнительную память. В действительности эта память не является частью памяти DOS, она является пулом RAM - областью памяти, которая по объему может быть до 8 Мб. Чтобы получить доступ к дополнительной памяти, прикладная программа требует у ЕММ (драйвер, который предоставляет программам доступ к памяти), определенное число логических страниц и затем ставит им в соответствие физические страницы в страничном блоке. ЕММ делит всю ОЗУ на плате на ряд блоков размером по 16К, называемых логическими страницами. Затем он находит неиспользуемый участок памяти размером 64К и делит его на 4 равных блока по 16К, которые называются физическими страницами. Как только логическая страница связывается с физической страницей, программа может считать из этой памяти или записать в нее, как если бы это была обычная память, использующая стандартные адреса, состоящие из сегментов и смещений. Память EMS используется для хранения данных, буферизованных с помощью команды FASTOPEN, указав при запуске FASTOPEN ключ /X, а также разместить в дополнительной памяти с помощью драйверов RAMDRive и SMARTDrive электронные диски и кеш-буферы.
Область между 640К и 1М называется областью верхней памяти. В типичной ПЭВМ оказывается, что многие из адресов в верхней памяти не используются. В ПК 386 с видеоадаптером VGA, сегменты А000h и B000h резервируются под видеобуфер , представляющий собой участок памяти, содержимое которого определяет, что вы видите на экране. Вы очень редко можете встретить ПК, который не имеет, по крайней мере, некоторого свободного пространства между 640К и 1М; вот почему область верхней памяти так важна для DOS 5.
DOS 5 поступает пользователю со специальным драйвером EMM386.EXE, который может конвертировать неиспользуемое пространство в области верхней памяти в используемое ОЗУ на ПК 386 и 486. Эти части ОЗУ называются блоками верхней памяти. В совокупности с командами DOS 5 ( LOADHIGH и DEVICEHIGH ), ЕММ386.ЕХЕ может дополнительно предоставить в распоряжение DOS до 128К или даже больше. Можно загрузить в UMB драйверы устройств.
Чтобы создать блоки верхней памяти, драйвер ЕММ386.ЕХЕ переводит в DOS в режим виртуального МП 8086 микропроцессоров 80386 и 80486, который не поддерживается в МП 80286. Режим виртуального МП 8086 сходен с реальным режимом, за исключением одной очень важной особенности. При работе DOS в режиме виртуального МП 8086 драйвер, например ЕММ386.ЕХЕ, может использовать особенность 386 и 486, известную как страничная организация. При такой организации считывания и записи одной области памяти перенаправляются по другим адресам. После того, как ЕММ386.ЕХЕ идентифицирует неиспользуемые участки области верхней памяти, он перепрограммирует микропроцессор 386 или 486 так, чтобы он пере направлял операции считывания и записи, предназначенные для этих областей верхней памяти, в расширенную память. Таким образом, эти неиспользованные области превращаются в блоки верхней памяти (UMB), а ЕММ386.ЕХЕ, в сущности, заполняет их ОЗУ из области памяти выше отметки 1Мб.
Чтобы достичь большего объема памяти, пригодного для DOS в нижних 640К, одно из простейших и наиболее эффективных конфигурационных изменений, которое можно осуществить, заключается в перемещении DOS в старшую память. По умолчанию DOS загружается в обычную память, сокращая объем памяти, доступной для других программ. При использовании DOS 5 максимальный размер выполняемой программы никогда не может быть больше 580К. Если в обычную память загрузить драйверы устройств или резидентные программы, или использовать большое количество дисковых буферов и дисковых файлов, максимальный размер выполняемой программы будет даже меньше.
Таким образом, была дана характеристика операционной системы DOS, были рассмотрены основные виды памяти ПК, дана их классификация, описаны особенности организации памяти в DOS и ее типы
Проверить, не является ли заданная матрица A(m,n) осе- или центросимметричной.
При отрицательном ответе найти хотя бы одну группу элементов-нарушителей симметрии.
Разработка алгоритма и программы
Для решения задачи использовали следующие переменные:
типа int
n–ширина матрицы;
m–длина матрицы;
i-счетчик количества строк;
j-счетчик количества столбцов;
k–строка первого несимметричного элемента;
r-столбец первого несимметричного элемента;
c- строка второго несимметричного элемента;
u – столбец второго несимметричного элемента;
vertical – равен 0, если матрица вертикальносимметрична;
horizont - равен 0, если матрица горизонтальносимметрична;
A[20][20] – массив для матрицы;
ПСЕВДОАЛГОРИТМ
1. Ввод ширины (m) и длины (n) матрицы;
2. Ввод элементов матрицы;
3. Вывод матрицы;
4. Проверка матрицы на вертикальную симметрию;
5. Проверка матрицы на горизонтальную симметрию;
6. Результат проверки матрицы на симметрию;
В программе использовала функцию ввода-вывода из библиотеки <stdio.h> .
//Программа сверки матрицы на симметрию
#include <stdio.h>
void main()
{
int m,n,i,j,k,r,c,u,vertical=0,
printf("Hello, Dear teacher!!! That is a program\nthat will check the matrix on symetry.\nPlease, enter the symbols of the matrix\nfrom left to right,from high to down\nThank you for your attention!\n\n");
printf("Please, enter the width of the matrix\n");
scanf("%d", &m);//ввод ширины матрицы
printf("Enter the length of the matrix\n");
scanf("%d", &n);//ввод длины матрицы
// Ввод матрицы
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
{
printf ("Enter the symbol A[%d][%d]\n", i,j);
scanf("%d", &A[i][j]);
}
}
// Вывод матрицы
for (i=1;i<=n;i++)
{
printf("\n\n");
for (j=1;j<=m;j++)
{
printf ("%d ", A[i][j]);
}
}
// Проверка матрицы на вертикальную симметрию
i=1;
while (i<=n)
{
j=1;
while (j<=m/2)
{
if (A[i][j]!=A[i][m-j+1])
//в случае несимметрии элементов запоминаются их координаты
//[k][r] и [c][u]
{k=c=i;
r=j;
u=m-j+1;
//чтобы сэкономить время и сразу выйти из 2-ух циклов
//элементам присвоены значения, неудовлетворяющие условию циклов
j=m+5;
i=n+5;
vertical=1;} //единица обозначает, что матрица вертикально несимметрична
else
{j++;}
}
i++;
}
// Проверка матрицы на горизонтальную симметрию
i=1;
while (i<=n/2)
{
j=1;
while (j<=m)
{
if (A[i][j]!=A[n-i+1][j])
{
k=i;
r=u=j;
c=n-i+1;
j=m+5;
i=n+5;
horizont=1;
}
else
{j++;}
}
i++;
}
// Итог проверки матрицы на симметрию
// Если матрица симметрична, то horizont, vertical не изменили значений и равны 0
// Если же несимметрична, то они равны 1
if (horizont==0&&vertical==0)
{printf("\n\nmatrix is centrecimetric\n");}
else if(horizont==1&&vertical==0)
{printf("\n\nmatrix is verticalcimetric\n the group of unlegal elements are element A[%d][%d] and element A [%d][%d]\n", k,r,c,u);}
else if(horizont==0&&vertical==1)
{printf("\n\nmatrix is horizontcimetric\n the group of unlegal elements are element A[%d][%d] and element A[%d][%d]\n", k,r,c,u);}
else
{printf("\n\nmatrix is noncimetric\n the group of unlegal elements are element A[%d][%d] and element A[%d][%d]\n", k,r,c,u);}
printf("\n\n\nThank you very much for your checking!\nAlways yours,\nParovoy Evgeni\n\nHappy New Year!!! Happy New Year!!! Happy New Year!!!\n\n");
}
Стержень длиной h нужно разрезать на стержни длиной L1, L2, …,Lk. Количество отрезков каждого типа не ограничено. Найти все способы раскроя и вычислить неиспользуемый остаток в каждом способе.
Для решения задачи использовали следующие переменные:
типа int
i-счетчик введенных отрезков;
k–счетчик введенных отрезков с излишней длиной;
типа float
h-длина стержня;
sum-сумма введенных отрезков;
s-вводимый отрезок стержня;
ПСЕВДОАЛГОРИТМ
1. Ввод длины стержня;
2. Ввод отрезков и проверка, чтобы их сумма не превышала длины стержня;
3. Вывод остатка от деления на отрезки и вывод количества отрезков;
В программе использовала функцию ввода-вывода из библиотеки <stdio.h> .
//Задача разбиения стержня на отрезки
#include <stdio.h>
void main()