Контексты ядра находятся в пространстве ядра

из исходного кода :

void rectangle( InputOutputArray _img, Point pt1, Point pt2,
                const Scalar& color, int thickness,
                int lineType, int shift )
{
    CV_INSTRUMENT_REGION()
Mat img = _img.getMat();

if( lineType == CV_AA && img.depth() != CV_8U )
    lineType = 8;

CV_Assert( thickness <= MAX_THICKNESS );
CV_Assert( 0 <= shift && shift <= XY_SHIFT );

double buf[4];
scalarToRawData(color, buf, img.type(), 0);

Point2l pt[4];

pt[0] = pt1;
pt[1].x = pt2.x;
pt[1].y = pt1.y;
pt[2] = pt2;
pt[3].x = pt1.x;
pt[3].y = pt2.y;

if( thickness >= 0 )
    PolyLine( img, pt, 4, true, buf, thickness, lineType, shift );
else
    FillConvexPoly( img, pt, 4, buf, lineType, shift );
}

здесь мы видим, что если толщина передана, он рисует прямоугольник с помощью PolyLine.

1
задан xczzhh 20 January 2019 в 06:55
поделиться

1 ответ

Наиболее важными частями контекста являются адресное пространство (или виртуальная память) и состояние процессора (например, значение регистра, счетчик программ и т. Д.). С этой точки зрения, должны существовать другие два вида контекстов: контекст ядра и контекст потока ядра.

Само ядро ​​работает в пространстве ядра и не зависит от задач (включая обычный процесс и потоки ядра). Его контекст называется пустым контекстом или контекстом обмена.

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

Фактически, контекст прерывания в точности совпадает с контекстом ядра и контекстом потоков ядра: они не зависят ни от какого нормального контекста процесса. Прерывание полностью асинхронно, поэтому в его контексте нет предположения о контексте прерванной задачи. Я думаю, именно поэтому Роберт Лав говорит, что есть только два вида контекстов: контекст процесса и другой.

0
ответ дан Chris Tsui 20 January 2019 в 06:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: