?

Log in

No account? Create an account
 
 
15 January 2009 @ 04:29 pm
Записки программиста.  

Проекты: Архивная система для ICL System-4

Время от времени вспоминаются программистские проекты, которые я делал когда-то. С одной стороны мне приятно рассказать о них – возможно даже с некоторыми техническими детелями. С другой – неясно, интересно ли это кому-нибудь. По крайней мере, из заголовка будет видно, что это про какой-то проект и читатели не заинтересованные (или без программистских знаний) могут эти очерки просто опустить.

 

В данном случае о двух моих работах, как ни странно, напомнили мне строчки одного из некрологов про Мишу Донского... Один из проектов была архивная система дла ICL 4-70 (она функционировала в ИПУ и позволяла содержать гораздо больше файлов, чем могли влезть на микроскопические 7-мегабайтные, а потом 30-мегабайтные диски; Миша потом переписал ее некоторое подмножество для ЕС). Другим была сама система управления базами данных ИНЕС – детище, у которого я был чем-то вроде архитектора / технического руководителя первую пару лет – потом, когда она стала жить собственной жизнью, меня сместили (не помню, был ли это какой-нибудь специальный акт со стороны Влада Арлазарова или это произошло само собой).

 

Должен отметить, что хотя большинство проектов, которые я сделал мне нравятся, их большаяя часть (если не все) была повторением (по крайней мере идейным) чего-то сделанного до меня. Хотя я делал иногда оригинальные реализации чего-то (часто чего-то, что мне очень нравилось, но хотелось сделать лучше), с оригинальными изобретениями у меня не очень-то получалось. Если я что когда придумывал (бывало, даже и сейчас бывает), то это было неподъемно для меня одного – а зажечь кого-то не удавалось...

 

Первым моим проектом в ИАТе (который потом стал ИПУ) была архивная система. У нас был вычислительный центр с машиной ICL 4-70 (300 с чем-то К памяти, несколько 7 мегабайтных и несколько 30 мегабайтных дисков). Работа в пакетном режиме с перфокарт: отдаешь в окошечко колоду карт, а потом (обычно через несколько часов, а то и на следующий день) получаешь обратно вместе с распечаткой.

 

Программистов – несколько сотен и у многих программы слишком большие, чтобы таскать колоды перфокарт; поэтому многие программы хранились на дисках (исходные тексты, а иногда и данные), а сперфокарт вводились только JCL и изменения для этих текстов. И довольно скоро места на дисках стало нехватать – файлы переписывали на ленты (а лент было много) и чистили диски – после чего часть времкни пропадала – программисты сдавали заявки на восстановление нужных файлов – и потом, до следующего переполнения. Схема очень похожая на страничную виртуальную память – но применительно к дискам.

 

Что я придумал (что было частично навеяно автоматическим архиватором экспериментальной операционной системы Multijob, которую мы тогда пробовали, но на которую не перешли) – это автоматизировать весь этот процесс и сэкономить громадные простои связянные с полной систкой дисков и с ручным восстановлением нужных файлов. Конечно, как и в случае с традиционной виртуальной памятью, подобная схема помогает только пока "working set" – все файлы, находящиеся в интенсивной работе – не слишком велик.

 

Как это было сделано:

  1. В оглавлении текстовой файловой системы, в каждом элементе было свободное место, которое мы использовали для хранения даты последнего архивирования на ленту. Так уж повезло, что при изменении файла это место чистилось, так что было легко определить, что файл изменен и его нужно архивировать. (Позже, для некоторых видов файлов оказалось возможным хранить и время последнего использования – для выборочной чистки это было очень полезно).
  2. Архиватор запускался вручную и записывал измененные файлы в конец очередной ленты (список лент ему задавался как параметр). При этом информацию о кадждом файле он записывал в специальном файле – оглавлении (который он тоже архивировал вначале – на случай полного краха). Так что про каждый файл (даже удаленный с диска) можно было узнать где его копия – номкр ленты и позиция на ленте.
  3. Программа восстановления (ее можно было запускать и вручную и автоматически) сортировала переданные ей заявки на восстановление файлов, сортировала их по лентам и позициям и восстанавливала файлы в полученном порядке, так что переустановки и вращение лент были минимизированы.
  4. Программа чистки позволяля удалять только архивированные файлы и могла удалять только те что давно не менялись (в идеале – те, что давно не использовались, но это не всегда было возможно).
  5. И, наконец, для полной автоматизации, пользователи могли вставить в задание список нужных файлов (некоторые, кажется, определялись автоматически, интерпретируя задание). Специальная программа ввода проверяла, все ли файлы есть на диске и, если нет, задерживала задание, генерировала заявки на восстановление фаулов и, если программа восстановления не была уже активна в этот момент, запускала ее. А в заявку на востановление вписывалась ссылка на задержанное задание из очереди.

 

Вот примерно и все. Эта система функционировала в ИПУ сколько-то лет, пока мы всем (почти) нашим коллективом не перетнулись во вновь созданный институт ВНИИСИ. Наверное, функционировала и потом....

Во ВНИИСИ Миша Донской (покойный :-( ) переписал архивную часть на ЕС ЭВМ – но только в виде программы записи и восстановления файлов – без всяких индексов, автоматизаии и.т.д. – упор был на быстрое чтение с диска (технику чтения с диска можно было еще улучшить, ускорив почти в два разы, но этого так и не произошло).

 

 




 
 
Current Mood: nostalgicnostalgic