字符设备缓沖区管理 空闲字符缓沖区队列 空闲字符缓沖区的分配与回收 在字符设备进行I/O时内核可利用getcf过程从空闲字符缓沖区队列中取得一个空闲缓沖区若队列空表明已无空闲缓沖区可提供便返回否则从队首取得一个空闲缓沖区并把指向该缓沖区的指针bp返回给调用者由于空闲缓沖区队列属于临界资源故还须采取互斥访问措施即在过程开始处将处理机的优先级提升为在取得空缓沖区之后再恢复处理机的优先级 设备的字符缓沖区队列 () getc过程 该过程用于从一个clist结构的队首指针所指示的字符缓沖队列中取出为首的字符然后修改该队列的可用字符计数和队首指针当取完一个缓沖区中的所有字符时将释放该缓沖区该过程的返回值是取出的字符 () putc过程 该过程用于将一个字符C放入设备的指定字符缓沖区队列的末尾若此时该队列空或队列的最后一个缓沖区已满且空闲字符缓沖区队列也空该过程无法将字符放入队列中则返回 () getcb过程 该过程用于从指定的设备字符缓沖区队列中取出第一个缓沖区并将该队列的可用字符计数减去第一个缓沖区中的字符数然后返回指向该缓沖区的指针bp若该缓沖区已是该队列中惟一的缓沖区则置队尾指针为空 () putcb过程 该过程用于将由bp所指向的缓沖区放入指定的设备字符缓沖区队列的末尾然后将该队列的可用字符计数加上bp缓沖区中的字符数后返回 ——返回教材目录 了解更多计算机相关基础课程视频 |